不使用任何額外變數,實現倒序字串
昨天和同事聊天聊到了這個問題,今天寫了個實現,放上來供大家拍磚。
主要思路是利用抑或操作!
#include <stdio.h>
#include <string.h>
void swap_char(char *p, int len)
{
if (NULL == p || len <= 0) {
return;
}
len--; // 保證p+len指向最後一個待交換的字元
while (p < (p+len)) {
*p = *p ^ p[len]; // a ^ b = c
p[len] = *p ^ p[len]; // a ^ c = b
*p = *p ^ p[len]; // b ^ c = a
p++; // p指向第一個待交換字元
len -=2; // 保證p+len指向最後一個待交換的字元
}
}
int main(int argc, char **argv)
{
if (argc != 2) {
return -1;
}
printf("%s\n", argv[1]);
swap_char(argv[1], strlen(argv[1]));
printf("%s\n", argv[1]);
return 0;
}
相關文章
- 字串、整數倒序輸出字串
- 字串倒序輸出字串
- PHP不使用任何內建函式實現字串翻轉PHP函式字串
- 將字串中的每個單詞順序進行顛倒,單詞還是原來的單詞,字母順序不發生變化字串
- js實現活動倒數計時JS
- JavaScript輸入字串字數倒計JavaScript字串
- jquery實現60秒倒數計時jQuery
- 用宏實現PPT倒數計時
- 使用Mybatis自定義外掛實現不侵入業務的公共引數自動追加MyBatis
- php與資料庫連線如何實現資料的順序和倒序PHP資料庫
- JavaScript 前端倒數計時糾偏實現JavaScript前端
- ReactiveCocoa 實現 按鈕倒數計時React
- js實現指定時間倒數計時JS
- js實現驗證碼倒數計時JS
- Android使用CountDownTimer實現驗證碼倒數計時Android
- js倒數計時 實現傳送驗證碼倒數計時60sJS
- 異或運算的巧用 → 不用額外的變數,如何交換兩個變數的值?變數
- Flutter倒數計時/計時器的實現Flutter
- Jquery 實現頁面倒數計時的功能jQuery
- 使用Builder設計模式實現不變性 - DZone JavaUI設計模式Java
- 用指標編寫程式將輸入的字串倒序輸出指標字串
- 【演算法拾遺】大數相加(不開闢額外空間)演算法
- PPT 倒數計時時鐘,用 GIF 動畫實現,可直接使用 -- 附 Python 實現程式碼動畫Python
- Js Jquery 實現的按鈕倒數計時整理JSjQuery
- Android 倒數計時的五種實現方式Android
- jQuery實現的按鈕可用倒數計時效果jQuery
- 微信開發之小程式實現倒數計時
- Ionic Angular 實現驗證碼倒數計時功能Angular
- [圖說Java]字串的不變性Java字串
- js如何實現將字串中的字元順序翻轉JS字串字元
- 日服人物一覽(按實裝版本倒序)
- 實現TensorRT-7.0外掛自由!(如果不踩坑使用TensorRT外掛功能)
- 【JavaScript】使用js實現傳送郵箱驗證碼,按鈕倒數計時JavaScriptJS
- L1-050 倒數第N個字串 (15分)字串
- python實現字串轉換整數Python字串
- 如何理解DDD中的不變性,不變數變數
- js程式碼實現倒數計時秒殺的效果JS
- 編寫將給定字串倒序輸出的函式[Java筆試題]字串函式Java筆試