• 字符串操作


    
    
    //如何实现字符串所有组合 
    //例如 输入abc 输出a b c ab ac bc abc
    void subset(int n,vector<char>c)  
    {  
        for(int i= 1 ; i < (1<<n) ; ++i) //i从1到8 
        {  
            for(int j = 0 ; j < n ; ++j)  
            {  
                if( i&(1<<j) )  // 判断i的二进制中哪些位为1,即代表取某一位   
                    cout<<c[j];    
            }  
            cout<<endl;  
        }  
    }  
    
    
    int main()
    {
        char c;
        vector<char>ch;
        while ((c=getchar())!='
    ')  //注意这里的输入结束判断
        {
            ch.push_back(c);
        }
        int len=ch.size();
        subset(len,ch);
    } 
        
    //字符串输入也可以用下面的代码
    string str; cin>>str; int len=str.length(); vector<char>ch(len); for (int i=0;i<len;i++) { ch[i]=str[i]; }
    
    
    
     
    
    
    
    //求一句话里单词的个数 前面空格后面非空格 计数器加1
    //she is a good girl ====5个
    int CountWords(char c[])
    {
        int word=0;
        int sum=0;
        char *p=c;
        for (;*p!='';p++)
        {
            if (*p==' ')
            {
                word=0;
            }
            else if (word==0)
            {
                word=1;
                sum++;
            }
        }
        return sum;
    }
    
    //字符串逆序abcd ----dcba
    //定义两个指针 一个在首 一个在尾 两个交换 
    //然后都往中间移动 一直到有交叉
    char *ReversStr(char *pStr)
    {
        char *p=pStr;
        char *q=pStr;
        while (*q)
        {
            q++;
        }
        q--;//因为q指向了最后的''所以要前移
        while(q>p)
        {
            char temp=*p;
            *p++=*q;
            *q--=temp;
        }
        return pStr;
    }
    
    //按单词逆序 
    //she is a good girl 
    //==girl good a is she
    //第一步先对每个单词逆序
    // ehs si a doog lrig
    //第二步 对上面句子整体逆序
    //具体由下面两个函数实现
    
    //将一个字符串逆序 this --siht
    void RevserseWord(char *first,char *last)
    {
        while (first<last)
        {
            char temp=*first;
            *first=*last;
            *last=temp;
            first++;
            last--;
        }
    }
    //总函数
    char *ReverseString(char *s)
    {
        char *p=s;
        char *q=s;
        while (*q!='')
        {
            if (*q==' ')//只是反转到倒数第二个单词
            {
                RevserseWord(p,q-1);
                q++;//q指向下一个单词首字母
                p=q;//p移动向下一个单词首字母
            }
            else
                q++;
        }
        q--;
        RevserseWord(p,q);//最后一个单词调换顺序
        RevserseWord(s,q);
        return s;
    }
    
    //如何实现字符串的逆序打印
    void ReversPrint(char *s)
    {
        if (s==NULL)
        {
            cout<<"NO CHAR"<<endl;
            exit(0);
        }
        char *p=s;
        while (*p!='')
        {
            p++;
        }
        p--;
        while(p>=s)
        {
            cout<<*p;
            p--;
        }
    }

    //统计字符串中每个字符出现的次数

    #include <iostream> #include <string> using namespace std; void main() { string str; cout<<"please input the string:"; cin>>str; int len=str.length(); int count[256]={0}; for (int i=0;i<len;i++) { count[str[i]]++; } for (int i=0;i<256;i++) { if (count[i]>0) { cout<<"The number of "<<(char)i<<" is "<<count[i]<<endl; } } }
  • 相关阅读:
    设计模式浅谈
    链表的遍历(1)
    链表的删除(3)
    链表结构的反转(5)
    二叉树数组表示法
    循环链表的插入和删除
    链表的链接(2)
    双向链表内结点的删除(4)
    hdu1042
    数组和链表的区别
  • 原文地址:https://www.cnblogs.com/mu-tou-man/p/3893380.html
Copyright © 2020-2023  润新知