• 机试笔记4--字符串


    字符串相关基础知识

    默认在c++环境下,加入头文件#include <cstring>,如果要使用c的char str[]来表示字符串,输入一串字符串可以使用gets(),但不可以使用c++的getline

    可以使用sort(str,str+strlen())来进行字符串排序。

    也可以使用string str,加入头文件#include <string>,可以通过getline进行输入,排序则使用sort(str.begin(),str.end());来进行排序。

     字符串查找函数,find(查找内容),未找到返回-1

    题型1.统计字符

        这里要注意的就是统计变量count要在每次统计完一个字符后清零。

    题型2.大小写转换

       对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。 在字符串中,单词之间通过空白符分隔,空白符包括:空格(' ')、制表符(' ')、回车符(' ')、换行符(' ')。

       这道题要注意"如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。"也就是说可能有大写的情况,第一个字母和后面的字母要分开处理。

    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
        string str;
        while(getline(cin,str)){
          for(int i=0;i<str.size();i++){
            if(i==0&&'a'<=str[0]&&str[0]<='z')
                str[0]=str[0]-'a'+'A';
            else {
              if(str[i-1]==' '||str[i-1]=='	'||str[i-1]=='
    '||str[i-1]=='
    '){
                if('a'<=str[i]&&str[i]<='z')
                    str[i]=str[i]-'a'+'A';
              }    
            }
          }
          cout << str<<endl;
        }
        return 0;
    }

    题型三.统计子串出现次数

    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
        string a,b;
        getline(cin,a);
        getline(cin,b);
        int sum_m=0;
        for(int i=0;i<b.size();i++){
                int flag=0;
                for(int j=0;j<a.size();j++){
                    if(a[j]!=b[i+j])
                        flag=1;
                }
                if(flag==0)
                  sum_m++;
        }
        cout << sum_m<<endl;
        return 0;
    }

    题型四.字符串加密

    编写加密程序,加密规则为:将所有字母转化为该字母后的第三个字母,即A->D、B->E、C->F、......、Y->B、Z->C。小写字母同上,其他字符不做转化。输入任意字符串,输出加密后的结果。

      要注意的就是x到z的转化,第一种方法是

               if(s[i]>'z')  s[i]-=26;

    第二种方法是

           s[i] = 'a'+(s[i]+3-'a')%26;

    题型四.字符串删除

    #include <iostream>
    #include <string>
    #include <vector>
    using namespace std;
    int main()
    {
        string a,b;
        getline(cin,a);
        getline(cin,b);
        int index[105]={0};
        for(int i=0;i<b.size();i++){
                int flag=0;
                for(int j=0;j<a.size();j++){
                    if(a[j]!=b[i+j]){
                        flag=1;
                    }
                }
                if(flag==0){
                    for(int k=i;k<i+a.size();k++)
                        index[k]=1;
                }
        }
        for(int i=0;i<b.size();i++)
        {
            if(index[i]==0)
                cout << b[i];
        }
        cout << endl;
        return 0;
    }

     如果题目要求不区分大小写,一律删除,可以先把字符串转化成全小写,再进行

    for(int i=0;i<b.size();i++){
          if('A'<=b[i]&&b[i]<='Z'){
            btype[i]=b[i]-'A'+'a';
          }
          else
            btype[i]=b[i];
        }

     将一个字符串中的某个单词替换成另一个单词

    #include<iostream>
    #include<cstring>
    #include<string>
    #include<vector>
    
    using namespace std;
    
    int main() {
        string s, a, b;
        vector<string> v;
        do
        {//分割单词填装进vector中,当输入回车就结束循环
            cin >> s;
            v.push_back(s);
        } while (cin.get() != '
    ');
        cin >> a >> b;//接收待替换字符串和要替换成的字符串
        for (int i = 0;i < v.size();i++) {//开始遍历vector,并输出
            if (v[i] == a) {//是目标字符串就替换掉
                v[i] = b;
            }
            if(i != v.size() - 1){//完成操作后开始输出,这里注意空格问题
                cout << v[i] << " ";
            }
            else {
                cout << v[i];
            }
    
        }
    
        return 0;
    }

     例题,输出不同的字符串

    #include<bits/stdc++.h>
    using namespace std;
    
    int main(){
        int n;
        cin>>n;
        set<string> s;
        while(n--){
            string str;
            cin>>str;
            s.insert(str);
        }
        cout<<s.size()<<endl;
    }

    可以利用set来计算,如果还要知道各个相同的字符串的个数,可以使用map

  • 相关阅读:
    pyqt5 树节点点击实现多窗口切换
    pyglet self.
    itchat key
    python队列Queue
    Python建立多线程任务并获取每个线程返回值
    利用Python实现多线程聊天功能
    Python3.5+PyQt5多线程+itchat实现微信防撤回桌面版代码
    pyglet player sound
    文件打开的几种访问模式
    pyglet StaticSource
  • 原文地址:https://www.cnblogs.com/Sunqingyi/p/12591866.html
Copyright © 2020-2023  润新知