码迷,mamicode.com
首页 > 其他好文 > 详细

华为机试—倒置英文句子中单词的字母顺序

时间:2014-12-30 15:22:15      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:华为机试   倒置英文句子中单词的字母顺序   单词倒置   字母顺序   

输入一个英文句子,包含字母大小写、逗号、句号和空格。把英文句子中的单词的字母顺序倒置。


#include <iostream>  
using namespace std;  
      
void revese(char* start,char* end)  
{
    while(start<end)  
    {  
        *start=*start^*end;
        *end=*start^*end;  
        *start=*start^*end;  
        start++;  
        end--;  
    }  
}  
      

int main()  
{  
    char* p=new char[1024];  
    gets(p);  
    int len=strlen(p);  
    int i=0,j=0;  
      
    while(i<len)  
    { 
        //判断字符ch是否为英文字母,若为小写字母,返回2,若为大写字母,返回1。若不是字母,返回0
        if(isalpha(p[i]))  
        {  
            char *start=p+i;  
            j=i+1;  
            while(j<len)  
            {  
                if(isalpha(p[j]))  
                    j++;  
                else  
                    break;  
            }  
            char *end=p+j-1;  
            revese(start,end);  
        }  
        i=j+1;  
        j++;
    }  

    for(i=0;i<len;i++)
        cout<<p[i];  

    cout<<endl;
          
    return 0;  
}  
 

测试结果,可能想的不周全,欢迎查漏补缺:

技术分享

华为机试—倒置英文句子中单词的字母顺序

标签:华为机试   倒置英文句子中单词的字母顺序   单词倒置   字母顺序   

原文地址:http://blog.csdn.net/wtyvhreal/article/details/42265471

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!