1:實現乙個函式,可以左旋字串中的k個字元。
abcd左旋乙個字元得到bcda
abcd左旋兩個字元得到cdab
方法一:
將字串的第乙個元素賦給乙個變數temp;
將字串後面的元素依次向前挪一位;
如果左旋一次以上迴圈1,2步驟;
#define _crt_secure_no_warnings 1
#include#include#includevoid leftturn(char *a, int k)
a[len - 1] = temp;
i++; }}
int main()
執行如下:
方法二:
首先舉個例子 :abcd(假設左旋兩位)
1:首先逆置前兩位 ab----ba,得到bacd
2:齊次逆置後兩位cd----dc, 得到badc
3:最後整體逆置得到cdab;
所以整個程式需要呼叫三個左旋函式;
**如下:
#define _crt_secure_no_warnings 1
#include#include#includevoid reverse(char *x, char *y) //逆置函式
}void turnleft(char *a, int i)
int main()
執行如下:
2:判斷乙個字串是否為另外乙個字串旋轉之後的字串。
例如:給定s1 = aabcd和s2 = bcdaa,返回1,給定s1=abcd和s2=acbd,返回0.
aabcd左旋乙個字元得到abcda
aabcd左旋兩個字元得到bcdaa
aabcd右旋乙個字元得到daabc
方法一:
由1題的方法一得出此題方法一:
#include#include#includeint is_equal(char *s1, char *s2) //判斷是否相等
s1[len-1] = temp;
if (strcmp(s1, s2) == 0)
i++;
} return 0;
}int main()
else
system("pause");
return 0;
}
執行如下:
方法二:
由1題的方法二得出此題的方法二:
**如下:
#define _crt_secure_no_warnings 1
#include#include#includevoid reverse(char *x, char *y)
}void leftturn(char *a, int i)
//判斷字串b是否是字串a左旋得到的
int is_turn(char *a, char *b)
} return 0;
}int main()
else
system("pause");
return 0;
}
執行如下:
C 左旋轉字串
問題描述 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部,如把字串 abcd 左旋轉 2 位得到字串 cdab 請實現字串左旋轉的函式。演算法分析 1.暴力移位法 a 把最後乙個字元取出並儲存起來,然後z最後乙個字元前面的所有字元後移,b 儲存的最後乙個字元存放到第乙個字元的位置,c ...
C語言旋轉字元(詳解)(演算法)
abcdef 輸出旋轉之後的字元我要旋轉2個字元 cdefab 二 演算法二,三步翻轉 結果 翻轉3個字元 void left move char arr,int k 3最後乙個空間的元素,arr len 1 tmp char tmp arr 拿到第乙個元素 每次迴圈拿到第乙個元素,到結束最後往後放...
C語言之字串旋轉
字串在語言中也是非常重要的存在,所以對於字串也有非常多的知識,而今天我就要和大家分享的是關於字串的一些問題 具體問題如下 實現乙個函式,可以左旋字串中的k個字元。abcd左旋乙個字元得到bcda abcd左旋兩個字元得到cdab 思路 其實這個問題我感覺就比較容易了,就是將乙個陣列中字元的位置按順序...