首页 > 代码库 > 练习题(4) -- 一道简单而有有趣的题目
练习题(4) -- 一道简单而有有趣的题目
PS: 因为最近一会儿用C++ 写程序,一会儿是python, 一会儿又是java,搞得我都有点语法错乱了。
题目如下:一个字符串形如 "yazyypta" 从这个字符串中删除任何字符,得到的字符串都是它的子字符串,比如对于这个字符串
"ya", "ayy", "pta" 都是它的子字符串,所有的子字符串按照字母序比较大小,求最大的大小最大的子字符串
举几个例子
1) abc
c
2) bcbxa
xa
3) bababa
bbba
解法提示:
要保证一个字符串最大,首先要保证这个字符串的第一个字符最大,然后是第二个字符最大。。。
因此可以联想到先找字符值最大的字符,然后从这个字符开始,向后寻找后续的那个字符串中,字符最大的字符
#include <iostream> #include <string> using namespace std; string max_str(string &s){ int N = s.size(); int temp[N]; char ch=‘\0‘; for(int i=N-1;i>=0;i--){ if(s[i]>=ch){ temp[i]=i; ch = s[i]; }else{ temp[i]=temp[i+1]; } } string res; for(int i=0;i<N;i++){ res += s[temp[i]]; i = temp[i]; cout<<res<<endl; } return res; } int main(){ string s = "yazyypta"; cout<<max_str(s)<<endl; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。