杭电ACM 2025:查找最大元素

来源:互联网 发布:西部数码域名备案流程 编辑:程序博客网 时间:2024/05/12 03:10

原创作品 转载请注明出处http://blog.csdn.net/always2015/article/details/45508527

这里写图片描述

这一道题刚开始看起来是有点麻烦的。但是做下去就会发现比想象的简单一点,我在程序中用到了一个在字符串中插入另一个字符串函数insert();关于insert的用法下面通过一个例子就可以了解:

#include <iostream> #include <string> using std::cout; using std::endl; using std::string; int main(void){     string str1="We can insert a string";     string str2="a str into ";          //在字符串指定位置前面插入指定字符串     cout <<str1.insert(14,str2)<<endl;     //在字符串指定位置前面插入指定字符串的子串(从指定索引开始的指定个数的字符)     cout <<str1.insert(14,str2,2,9)<<endl;     //插入指定字符串的前n个字符     cout <<str1.insert(14,"test hello",5)<<endl;     //插入n个相同字符到字符串中     cout <<str1.insert(14,6,'*')<<endl;     //替换指定索引开始的指定长度的子串     cout <<str1.replace(3,3,"may")<<endl;     //用给定字符串的指定子串来进行替换     //如下,实际上使用的是could来进行替换            cout <<str1.replace(3,3,"can could",4,5)<<endl;     //使用给定字符串的前n个字符来进行替换:can     cout <<str1.replace(3,5,"can could",3)<<endl;     //使用指定个数的重复字符来进行替换     cout <<str1.replace(3,3,5,'*')<<endl;     string word="We";     size_t index=str1.find(word);     if(index!=string::npos)     //删除指定索引开始的指定长度的字符     cout <<str1.erase(index,word.length())<<endl;     return 0; }

很简单吧,具体含义在注释里面有。下面我就给出我的AC代码,注释在代码里写的很详细,特别是需要注意的地方。

#include <iostream>#include<string>using namespace std;int main(void){    string input_str,insert_str="(max)";    int lenght;    char max_char;    while(cin>>input_str)    {        lenght=input_str.size();        max_char=input_str[0];        //求出字符串中的最大字符        for(int i=1; i<lenght; i++)        {            if(input_str[i]>max_char)            {                max_char=input_str[i];            }        }        /*注意:在这里j的范围必须写成j<input_str.size(),不能用lenght代替。        因为下面插入字符串后,整个字符串长度一直在变化        */        for(int j=0; j<input_str.size(); j++)        {            if(input_str[j]==max_char)            {                input_str.insert(j+1,insert_str);                //插入的(max)占据了5个位置,所以j在扫描时候直接跳过                j+=5;            }        }        cout << input_str << endl;    }    return 0;}
0 0