题目描述
解法一
基本思路:直接移动
class Solution { public: string reverseLeftWords(string s, int n) { for(int i = 0; i < n; i++){ int j = 0; int temp = s[0]; for(; j < s.size() - 1; j++){ s[j] = s[j+1]; } s[j] = temp; } return s; } };
解法二
基本思路:两段拼接
class Solution{ public: string reverseLeftWords(string s, int n) { string temp = ""; for(int i = n; i < s.size(); i++){ temp += s[i]; } for(int i = 0; i < n; i++){ temp += s[i]; } return temp; } };
解法三
基本思想:两段拼接,使用substr(start, len);
主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。
返回值: string,包含s中从start开始的len个字符的拷贝(pos的默认值是0,len的默认值是s.size() - pos,即不加参数会默认拷贝整个s)
注意:若start的值超过了string的大小,则substr函数会抛出一个out_of_range异常;若start+len的值超过了string的大小,则substr会调整n的值,只拷贝到string的末尾
class Solution { public: string reverseLeftWords(string s, int n) { string start = s.substr(0, n); string end = s.substr(n, s.size() - n); string res = end + start; return res; } };
标签:58,temp,Offer,int,substr,start,字符串,size,string From: https://www.cnblogs.com/zc-030/p/17162369.html