小白解题
又是这种带顺序的字符数组的变换,老样子,考虑单个又累又不好用,创建新的数组,讲符合要求的放入即可。
需要注意vector与string之间的转换。
代码:
class Solution { public: string LeftRotateString(string str, int n) { int l = str.size(); vector<char>s; string st; for(int i=n;i<l;i++){ s.push_back(str[i]); } for(int j=0;j<n;j++){ s.push_back(str[j]); } return st.assign(s.begin(),s.end()); } };
别人的思路:
看了一下别人的思路,主要有两种:1、讲字符串分为两部分,掉个位置再组合,这里需要用到substr之类的函数;2、挺有意思的解法,字符串分为两部分,每部分翻转一下,然后组合再翻转一下,只是在C++中翻转实现简单吗?