1.文字列の左回転は、文字列の前のいくつかの文字を文字列の終わりまで転送することです。弦の左回転の機能を実現する関数を定義してください。たとえば、文字列 "abcdefg"と数値2を入力すると、関数は2ビット左に回転して得られた結果 "cdefgab"を返します。
例1:
入力:s = "abcdefg"、k = 2
出力: "cdefgab"
例2:
入力:s = "lrloseumgh"、k = 6
出力: "umghlrlose"
2.コード表示
void Swap(char *pa,char *pb)
{
char tmp = *pb;
*pb =*pa;
*pa = tmp;
}
void Reverse(char* s,int begin,int end)
{
while(begin<end)
{
Swap(&s[begin],&s[end]);
++begin;
--end;
}
}
char* reverseLeftWords(char* s, int n)
{
int len = strlen(s);
Reverse(s,0,n-1);
Reverse(s,n,len-1);
Reverse(s,0,len-1);
return s;
}
3.問題解決のアイデア問題
は、3回めにして解決できます。Strlenはデータ長として計算されます。アクセス時には-1に注意してください。そうでない場合、\ 0を途中で交換すると、不完全な文字列になります。