找出字符串中的数字最字串中ascall码最小字符的的位置

找出一个字符串中不含重复字符的最长子字符串
找出一个字符串中不含重复字符的最长子字符串
采用动态规划,若已知以第i-1位字符为结尾的最长子字符串长度l[i-1],并知道第i-1位字符上一次出现的位置k,就可以求出以第i个字符为结束的最长子字符串(min(l[i-1]+1,i-k)。
遍历字符串就可以求出最长子串,时间复杂度为O(n),代码如下
#include "stdafx.h"
#define min(a, b) (((a) & (b)) ? (a) : (b))
void Find(const char* str,int len)
if(str == NULL)
int prev[255];
for(int i=0; i&255; i++)
prev[i] = -1;
int *maxlen = new int[len];
maxlen[0] = 1;
prev[str[0]] = 0;
for(int i=1; i
if(prev[str[i]] == -1)
maxlen[i] =maxlen[i-1]+1;
if(prev[str[i]] != -1)//occur
maxlen[i] = min(maxlen[i-1]+1,i-prev[str[i]]);
prev[str[i]] =
int l = 0;
for(int i=0; i
l = maxlen[i];
for(int i=0; i
if(maxlen[i] == l)
for(int j = i-l+1; j&=i; j++)
int main(void)
const char* arr[] ={"ttdjb", "niceday", "helloworld",NULL};
for(int i = 0; arr[i]; ++i)
Find(arr[i],strlen(arr[i]));
//Find("abcabc",6);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
以前我觉得人不能太自私,但是现在我发现其实自己也很自私......
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'从键盘输入一个字符串,转换为ASCLL值',
blogAbstract:'#include &stdio.h&#include &stdlib.h&long fun(char *p){int n = 0; while(\'0\' &= *p && *p &= \'9\') n=n*10+*p++ - \'0\'; }int main(){ char S[6];printf(\"Enter a string:\");gets(S); /*读取字符串*/ n=fun(S);printf(\"%ld\\n\",n);return 0;}',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:2,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'以前我觉得人不能太自私,但是现在我发现其实自己也很自私......',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}找出字符串中出现最多的字符,出现了多少次?
假如你面试的下一家单位正好出了这样一道题,你会如何来答呢?据说是百度的面试题呢。
一、最精典的方法。思路:循环字符串中所有字符,分别统计字符出现次数,取出出现频率最高的字符。 以下是程序代码&script&
var str = '万wwwaann波波波波波波ndeee博rrrr客';
alert(getMost1(str));
function getMost1(str){
var most = [], num = 0;
while( str != '' ){
var ori = str,
target = str.substr(0,1), //目标字符
if(/[\$\(\)\*\+\.\?]/.test(target)) re = '\\' +
str = str.replace(new RegExp(re, 'g'), '');
diff = ori.length - str. //计算目标字符数目
if(diff & num) {
most = [target];
} else if (diff == num) {
most.push(target);
return num + ': ' +
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]二、最取巧的办法。思路:1、转换成JSON数据。eg.“波rr波”&-&&{'波':&2,&'r':&2}&。2、再以JSON数据的值为索引转换数组。eg.{'波':&2,&'r':&2}&-&[2]:'波','r'。 以下是程序代码&script&
var str = '万wwwaann波波波波波波ndeee博rrrr客';
alert(getMost2(str));
function getMost2(str) {
var s = str.split(''), o ={}, a=[];
for(var i = 0; i & s. i++) o[s[i]] ? o[s[i]]++ : o[s[i]]=1; //记录数目
for(var key in o) a[o[key]] ? a[o[key]].push(key) : a[o[key]] = [key]; //取出
return a.length - 1 + ': ' + a.pop();
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]三、最精简的办法。思路:充分利用数组的sort方法根据出现频繁排序。PS:这里重在重新排列数据,最终取值不全。 以下是程序代码&script&
var str = '万wwwaann波波波波波波ndeee博rrrr客';
alert(getMost3(str));
function getMost3(str){
var most = str.split('').sort().join('').match(/(.)\1*/g); //排列重复字符
most = most.sort(function(a,b){return a.length - b.length}).pop();//按出现频繁排序
return most.length + ': ' + most[0];
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
相关排行总榜在字符串str中找出ASCII码最大的字符,将其放在第一个位置上并将该字符向后顺序移动。为什么是q=q+i;_百度知道
在字符串str中找出ASCII码最大的字符,将其放在第一个位置上并将该字符向后顺序移动。为什么是q=q+i;
*q = *(q-1).h& p[i])
max = p[i];
i++;void fun(char
i = 0; while (p[i] ;/********found********/ max = p[i]; } while (q &********found********&#47#include & } p[0] ={ char
max!= 0) {
提问者采纳
#define MAX 15void main(){
char *p, a);%s\
printf(& *p)
max = *p;n&
p++;%s&#92, *q.h&gt,你看看;
p[0] = max。#include&
max = p[0];
char a[MAX] = &
printf(&quot, a);stdio,; q)
*q-- = *(q-1);
if(max &lt应该是q = p +i love you&下面的代码测试通过;
其他类似问题
按默认排序
其他2条回答
过程没错; q--,之后跳出循环 最后将p[0]赋最大值max即可 你可以试一下,将p[0]移到了p[1],所以完成移动; } 表示将max之前的串逐个后移一位 在q=p+1时{ *q=*(q-1).答案错了要说有缺陷就是当有多个相等最大值时
代码里是p = p + i指针往后移一位,指到下一个字符,继续判断,把最大的付给max,
ascii码的相关知识
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁页面导航:
→ 正文内容 python从字符串中找出字符1的位置以及个数
python实现从字符串中找出字符1的位置以及个数的方法
这篇文章主要介绍了python实现从字符串中找出字符1的位置以及个数的方法,对于Python字符串操作的学习有一定的帮助与借鉴作用,需要的朋友可以参考下
本文实例主要实现给出任意字符串,获取字符串中某字符的位置以及出现的总次数。
实现该功能代码的时候可以使用函数enumerate来将字符串分离成位置和字符,然后进行比较即可。
具体实现代码如下:
#!/bin/env python
#-*- coding:utf-8 -*-
用enumerate将string中的1都找出来,
用enumerate实现:
def get_1_pos(string):
onePos=list(((pos,int(val)) for pos,val in enumerate(string) if val == '1'))
return onePos
def get_1_num(string):
return len(list(get_1_pos(string)))
def get_char_pos(string,char):
chPos=list(((pos,char) for pos,val in enumerate(string) if(val == char)))
return chPos
def get_char_num(string,char):
return len(list(get_char_pos(string,char)))
if(__name__ == "__main__"):
str0="10101"
str1="123abc123abc123abc"
lt=get_1_pos(str0)
lt=get_1_pos(str1)
num=get_1_num(str0)
print(num)
lt=get_char_pos(str1,'1')
num=get_char_num(str1,'1')
print(num)
希望本文实例对大家Python程序设计中字符串操作的学习有所帮助。
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910

我要回帖

更多关于 ascall码表 的文章

 

随机推荐