mu_tou_man

导航

 

//如何实现字符串所有组合 
//例如 输入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())!='\n')  //注意这里的输入结束判断
    {
        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!='\0';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指向了最后的'\0'所以要前移
    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!='\0')
    {
        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!='\0')
    {
        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; } } }

 

posted on 2014-08-05 22:38  mu_tou_man  阅读(164)  评论(0编辑  收藏  举报