字符串变形题解

字符串变形

http://www.nowcoder.com/questionTerminal/c3120c1c1bc44ad986259c0cf0f0b80e

  1. 第一步先翻转单词顺序,之前看到的有个巧妙的思路,先对整个字符串进行翻转,然后循 环对每个单词进行翻转,就达到了翻转单词顺序的效果,这个时间复杂度为:因为中间有个while循环,最多循环单词的最大长度,单词长度是常数级别的,所以时间复杂度为o(n)的,
  2. 第二步遍历字符串,将每个大写变成小写,小写变成大写,时间复杂度为o(n)的
    class Transform {
    public:
    string trans(string s, int n) {
      // write code here
      if(n==0) return s;
      reverse(s.begin(),s.end());  //翻转整个字符串
      for (int i=0;i<n;i++){
          int j=i;
          while(j<n && s[j]!=' ') j++;
          reverse(s.begin()+i,s.begin()+j);   //翻转不是空格之外的单词
          i=j;
      }
      string res;
      for (int i=0;i<n;i++){
          if (s[i]!=' ' && s[i]<='Z' && s[i]>='A') res+=s[i]-'A'+'a';
          else if (s[i]!=' ' && s[i]>='a' && s[i]<='z') res+=s[i]-'a'+'A';
          else res+=s[i];
      }
      return res;
    }
    };
全部评论

相关推荐

7 2 评论
分享
牛客网
牛客企业服务