問題描述
定義字串的左旋轉操作:把字串前面的若干個字元移動到字串的尾部,如把字串"abcd"左旋轉 2 位得到字串"cdab",請實現字串左旋轉的函式。
演算法分析
1.暴力移位法
a、把最後乙個字元取出並儲存起來,然後z最後乙個字元前面的所有字元後移,
b、儲存的最後乙個字元存放到第乙個字元的位置,
c、然後依次執行第一步和第二步,直到移動完需要移動的字元數為止。
void leftloopmove(char * str, unsigned short steps)
*str = tmp;
} return;
}
2.三步翻轉法
a、逆置翻轉字元的左邊;
b、逆置翻轉字元的右邊;
c、逆置整個字串。
/*
* 函式名稱:reversestr
** 函式功能:逆置
** 入口引數:left, right
** 出口引數:void
** 返回型別:void
*/void reversestr(char * left, char * right)
return;}/*
* 函式名稱:leftloopmove
** 函式功能:左旋
** 入口引數:str, steps
** 出口引數:void
** 返回型別:void
*/void leftloopmove(char * str, unsigned short steps)
主函式
#define _crt_secure_no_warnings 1/**
* 檔名稱:leftloopmove.c
* 功能:實現乙個函式,可以左旋字串中的k個字元。
* abcd左旋乙個字元得到bcda
* abcd左旋兩個字元得到cdab
** 當前版本:v1.0
* 完成日期:2023年4月16日14:36:11
*/# include # include # include int main(void)
輸出結果
左旋轉字串
題目 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函式。要求時間對長度為n的字串操作的複雜度為o n 輔助記憶體為o 1 思想 旋轉三次 include include using namespace std v...
左旋轉字串
package com.string 旋轉字串 q 26 左旋轉字串 題目 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab。請實現字串左旋轉的函式。要求時間對長度為n的字串操作的複雜度為o n 輔助記憶體為o 1 public cla...
左旋轉字串
如abc,左旋1得到bca,左旋2得到cab o n k 的演算法 include using namespace std include include include include include include include include include include int main...