NC262. 左旋转字符串
描述
示例1
输入:
"abcXYZdef",3
输出:
"XYZdefabc"
示例2
输入:
"aab",10
输出:
"aba"
C 解法, 执行用时: 2ms, 内存消耗: 404KB, 提交时间: 2021-11-26
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @param n int整型 * @return string字符串 * * C语言声明定义全局变量请加上static,防止重复定义 */ char* LeftRotateString(char* str, int n ) { // write code here char *result; int len, i; if (NULL == str || n < 0) { return ""; } len = strlen(str); if (len < n && len != 0) { n = n % len; } result = (char*)malloc(len); if (result == NULL) { return ""; } for (i = n; i < len; i++) { result[i - n] = str[i]; //拷贝B字符串 } for (i = 0; i < n; i++) { result[len - n + i] = str[i]; // 拷贝A字符串 } return result; }
C++ 解法, 执行用时: 2ms, 内存消耗: 524KB, 提交时间: 2022-02-10
class Solution { public: string LeftRotateString(string str, int n) { if(str.empty()|| n == 0) return str; n%= str.size(); return str.substr(n)+str.substr(0,n); } }; // class Solution { // public: // void ReverseString(string &str,int start,int end){ // while(start<end){ // char temp = str[start]; // str[start] = str[end]; // str[end] = temp; // start++; // end--; // } // } // string LeftRotateString(string str, int n) // { // if(str.empty() || n == 0) return str; // n%=str.size(); // ReverseString(str,0,n-1); // ReverseString(str,n,str.size()-1); // ReverseString(str, 0, str.size()-1); // return str; // } // }; // class Solution { // public: // void LeftRotateStringOne(string& str){ // char temp = str[0]; // int i = 0; // for(;i<str.size()-1;i++) // { // str[i] = str[i+1]; // } // str[i] = temp; // } // string LeftRotateString(string str, int n) { // if(n == 0 || str.empty()) // return str; // n %= str.size(); // while(n--) // { // LeftRotateStringOne(str); // } // return str; // } // };
C++ 解法, 执行用时: 2ms, 内存消耗: 524KB, 提交时间: 2021-11-25
class Solution { public: string LeftRotateString(string str, int n) { if(str.size() <= 1) return std::move(str); auto sz = str.size(); while(n >= sz) n %= sz; str += str; return std::move(str.substr(n, sz)); } };
C++ 解法, 执行用时: 2ms, 内存消耗: 528KB, 提交时间: 2021-11-22
class Solution { public: string LeftRotateString(string str, int n) { int len = str.size(); if(len==0) return ""; n = n%len; if(n==0) return str; str = str + str.substr(0,n); str = str.substr(n); return str; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 540KB, 提交时间: 2021-11-22
class Solution { public: string LeftRotateString(string str, int n) { int len = str.length(); string ret = ""; if(len == 0){ return ret; } n = n % len; ret += str.substr(n, len) + str.substr(0, n); return ret; } };