您的位置:首页 > Web前端

牛客网答题笔记---字符串变型

2016-09-04 12:57 176 查看

题目描述:

对于一个给定的字符串,我们需要在线性(也就是O(n))的时间里对它做一些变形。

首先这个字符串中包含着一些空格,就像”Hello World”一样,然后我们要做的是把着个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。比如”Hello World”变形后就变成了”wORLD hELLO”。

输入描述

给定一个字符串s以及它的长度n(1≤n≤500)


输出描述

请返回变形后的字符串。题目保证给定的字符串均由大小写字母和空格构成。


输入例子

"This is a sample",16


输出例子

"SAMPLE A IS tHIS"


题目分析

这道题目就是简单的字符串变换的题目,涉及到大小写转换和逆序,注意区分边界条件即可。

代码

#include<iostream>
using namespace std;

class Transform {
public:
string change(string s){
for(int i = 0;i < (int)s.size();i++){
if(s[i] >= 'a' && s[i] <= 'z')
s[i] = (char)(s[i]-32);
else
s[i] = (char)(s[i]+32);
}
return s;
}

string trans(string s, int n) {
string res = "";
int temp = 0;
for(int i = n-1;i >= 0;i--){
temp++;
if(s[i] == ' '){
string str = "";
for(int j = i+1;j < temp+i;j++){str += s[j];}
str = change(str);
str += ' ';
res += str;
temp = 0;
}
//在遇到左边缘的时候,直接将相当于另外一个' ',也是执行和遇到' '的相同操作,但是注意这里的j = i,而不是i+1
if(i == 0){
string str = "";
for(int j = i;j < temp+i;j++){str += s[j];}
str = change(str);
res += str;
}
}
cout<<res<<endl;
return res;
}
};


python代码

这个用python做很简单,list太强

# -*- coding:utf-8 -*-

class Transform:
def trans(self, s, n):
a = s.swapcase().split(' ')
b = a[::-1]
return ' '.join(b)

#解析下代码:
#swapcase()函数是将str中的大小写互相转换,类似的还有lower()---大变小,upper()---小变大
#split('val')函数指定遇到val就断开,变成一个小的字符串,得到的a是一个list,包含多个元素
#a[::-1],是将整个list反转,但是每个元素中的str顺序不变
#最后再将b合并成一整个str,将切分的那一个' '给补回来
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息