スポンサーリンク
[c言語]文字列を逆順に入れ替える関数
参考:[c言語]int型の数字を逆順に入れ替える(サンプルコード)
第一引数のstrの文字列を逆順に入れ替えます。
void revStr(char* str){ int size = strlen(str); int i,j; char tmp = {0}; for(i = 0, j = size - 1; i < size / 2; i++, j--){ tmp = str[i]; str[i] = str[j]; str[j] = tmp; } return; }
ポイントは下記でしょうか。
for文で前方と後方から中央に1文字ずつ進めていき、
前と後ろで置換処理をします。
for(i = 0, j = size - 1; i < size / 2; i++, j--){ tmp = str[i]; str[i] = str[j]; str[j] = tmp; }
サンプルコード
下記がサンプルコードになります。
$ cat sample.c #include <stdio.h> #include <string.h> void revStr(char* str){ int size = strlen(str); int i,j; char tmp = {0}; for(i = 0, j = size - 1; i < size / 2; i++, j--){ tmp = str[i]; str[i] = str[j]; str[j] = tmp; } return; } int main(){ char str[] = "After"; printf("%s\n", str); revStr(str); printf("%s\n", str); return 0; }
下記が実行結果になります。
$ gcc -o sample sample.c $ ./sample After retfA
スポンサーリンク
Pythonでもコード書いてみました
下記がサンプルコードになります。
分かりやすさのため、変数をleftとrightの変数名にしています。
revStr()の引数はリスト型を想定しています。
#!/usr/bin/env python3 # coding: UTF-8 def revStr(s): for left in range(int(len(s) / 2)): right = int(len(s)) - 1 - left s[left], s[right] = s[right], s[left] if __name__ == '__main__': s = ['a', 'f', 't', 'e', 'r'] revStr(s) print(s)
c言語だと一回tmpを経由してましたが、Pythonだと下記のように書けます。
s[left], s[right] = s[right], s[left]
下記が実行結果になります。
$ ./sample.py ['r', 'e', 't', 'f', 'a']
スポンサーリンク