//寫乙個函式,將字串翻轉,翻轉方式如下:「i am a student」反轉成「student a am i」,不借助任何庫函式。據說這題在筆試或者面試當中,出現的頻率非常高。剛好在書上也看到這題,又在看到這題出現了(「發職位經典面試題」)。
作者也提示了,方法是先反轉整個字串,然後再反轉字串。譬如先將「i am a student」反轉為「tneduts a ma i」,然後再對每個字串(空格分割)反轉一次。思想就那麼簡單吧。實現起來的話,我就有點凌亂了。c++沒學好。傷不起。
1 #include 2執行之後,我發現是成功的。3void
main()
418 q--;
19while(p<=q)
20//
反轉整個字串
2728
printf(str);
29 printf("\n"
);30
31 q=str;//
指標指向開始位置
32char *s,*t;
33 s=t=str;
34while(*q!='\0'
)35//反轉區域性字串
4748 s=q+1
;49 t=q;50}
52 q++;
53 t++;54}
5556
printf(str);
57 printf("\n"
);58 }
但是怎麼想都感覺有點問題,把「i am a student」換成「you are a student」果然有問題。
沒有處理最後乙個字串的緣故。因為我是按照
if(*q=='來處理字串的,而字串最後乙個的結尾沒有空格了,而是以'\0'結尾的。')
最後乙個字串的處理我是這樣做的。
if(*q=='另外給乙個我在《程式設計師面試寶典》看到的**,不過這個主要採用陣列處理,而且使用了庫函式(strlen()),但是思想差不多吧。可以參考參考。'||*(q+1)=='\0'
)
q--;
while(p<=q)
//反轉整個字串
printf(str);
printf("\n
");char *s;
q=p=s=str;//
指標指向開始位置
while(*q!='\0'
)
//反轉區域性字串
s=q+1
; p=q;
}q++;
p++;
}printf(str);
printf("\n
");}
#include #include既然看到了,就應該要思考吧。僅提公升..int main(void
) printf(
"string=%s\n
",str);
int i=0
;
//第二步進行部分反轉,如果不是空格則開始反轉單詞
while
(str[i])
i=i-1
; end=i;
}while(end>begin)
i++;
}printf(
"string=%s\n
",str);
return0;
}
參考《程式設計師面試寶典(第二版)》
開發職位經典面試題
筆試題目「翻轉字串」的實現
寫乙個函式,將字串翻轉,翻轉方式如下 i am a student 反轉成 student a am i 不借助任何庫函式。我自己寫了個實現 將字串翻轉 翻轉方式如下 i am a student 反轉成 student a am i 方法 先反轉整個字串,然後再反轉字串。譬如先將 i am a s...
筆試題 字串翻轉 python
將一句話的單詞進行倒置,標點不倒置。比如 i like beijing.經過函式後變為 beijing.like i 輸入描述 每個測試輸入包含1個測試用例 i like beijing.輸入用例長度不超過100 輸出描述 依次輸出倒置之後的字串,以空格分割 輸入例子 i like beijing....
字串筆試題
1 輸入乙個整數的字串,把該字串轉換成整數並輸出。例如輸入字串 345 則輸出整數345 思路 依次掃瞄字串,每掃到乙個字元,把之前的得到的數字乘以10再加上當前字元表示的數字。注意 還可能包括 或 表示整數的正負。需要特殊處理 考慮非法輸入 1 判斷指標是否為空 2 輸入的字串可能不是數字的字元,...