java字母反过来_java之字母反转~~ - Plight - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
字符串的反轉輸出
這也是面試題中常考的一道。我們就以一個包含了全部26個英文字母,同時又具有完整含義的最短句子作為例子來完成解答。先來看一下這個句子:
引用
A quick brown fox jumps over the lazy dog.(一只輕巧的棕色狐貍從那條懶狗身上跳了過去。)
最常用的方式就是反向取出每個位置的字符,然后依次將它們輸出到控制臺:
public class StringReverse {
public static void main(String[] args) {
// 原始字符串
String s = "A quick brown fox jumps over the lazy dog.";
System.out.println("原始的字符串:" + s);
System.out.print("反轉后字符串:");
for (int i = s.length(); i > 0; i--) {
System.out.print(s.charAt(i - 1));
}
// 也可以轉換成數組后再反轉,不過有點多此一舉
char[] data = s.toCharArray();
System.out.println();
System.out.print("反轉后字符串:");
for (int i = data.length; i > 0; i--) {
System.out.print(data[i - 1]);
}
}
}
public class StringReverse {
public static void main(String[] args) {
// 原始字符串
String s = "A quick brown fox jumps over the lazy dog.";
System.out.println("原始的字符串:" + s);
System.out.print("反轉后字符串:");
for (int i = s.length(); i > 0; i--) {
System.out.print(s.charAt(i - 1));
// 也可以轉換成數組后再反轉,不過有點多此一舉
char[] data = s.toCharArray();
System.out.println();
System.out.print("反轉后字符串:");
for (int i = data.length; i > 0; i--) {
System.out.print(data[i - 1]);
}
}
}
運行結果:
1、原始的字符串:A quick brown fox jumps over the lazy dog.
2、反轉后字符串:.god yzal eht revo spmuj xof nworb kciuq A
3、反轉后字符串:.god yzal eht revo spmuj xof nworb kciuq A
以上兩種方式雖然常用,但卻不是最簡單的方式,更簡單的是使用現有的方法:
Java代碼
public class StringReverse {
public static void main(String[] args) {
// 原始字符串
String s = "A quick brown fox jumps over the lazy dog.";
System.out.println("原始的字符串:" + s);
System.out.print("反轉后字符串:");
StringBuffer buff = new StringBuffer(s);
// java.lang.StringBuffer類的reverse()方法可以將字符串反轉
System.out.println(buff.reverse().toString());
}
}
運行結果:
1、原始的字符串:A quick brown fox jumps over the lazy dog.
2、反轉后字符串:.god yzal eht revo spmuj xof nworb kciuq A
編輯特別推薦:
a
原題:
以單詞為最小單位翻轉字符串
Write the function String reverseStringWordByWord(String input) that reverses
a string word by word. For instance,
reverseStringWordByWord("The house is blue") --> "blue is house The"
reverseStringWordByWord("Zed is dead") --> "dead is Zed"
reverseStringWordByWord("All-in-one") --> "All-in-one"
面試系列4種的實現,比較費空間,因為多申請了一段空間來保存結果。
在看了其他高手的實現后,發現可以不用申請空間,并且循環的次數更少,也可以實現相同的效果。
大體思路是:
原字符串: The house is blue
先翻轉整個字符串-> eulb si esuoh ehT
再翻轉單個單詞。
代碼:
/********************************************************************
created: 2006/06/16
filename: C:\Documents and Settings\Administrator\桌面\flwo\reverse2.c
file path: C:\Documents and Settings\Administrator\桌面\flwo
file base: reverse
file ext: c
author: A.TNG
version: 0.0.1
purpose: 以單詞為最小單位翻轉字符串-2 優化版
Write the function String reverseStringWordByWord(String input)
that reverses a string word by word. For instance,
reverseStringWordByWord("The house is blue") --> "blue is house The"
reverseStringWordByWord("Zed is dead") --> "dead is Zed"
reverseStringWordByWord("All-in-one") --> "All-in-one"
參考其他高手的思路:
先翻轉整個字符串-> eulb si esuoh ehT
再翻轉單個單詞。
*********************************************************************/
#include
#include
#include
#define REVERSE_WORD(p1, p2) while (p1 <= p2) { char ch; ch = *p1; *p1 = *p2; *p2 = ch; p1++; p2--; }
/*
* name: reverse_src_word_by_word
* params:
* des [out] 輸出字符串, des 指向實現申請的空間
* src [in] 輸入字符串,需要處理的字符串
* return:
* 處理完成后的 des 指針
* notes:
* 以單詞為最下單位翻轉字符串
* 優化: 先翻轉整個字符串,再翻轉單個單詞
*
* author: A.TNG 2006/06/16 10:37
*/
char * reverse_str_word_by_word2(char *src)
{
char *p1, *p2;
int n_src_len;
if (NULL == src)
return NULL;
/* 先把整個字符串翻轉一次 */
n_src_len = strlen(src);
p1 = src; p2 = src + n_src_len - 1;
REVERSE_WORD(p1, p2);
#if 0
while (p1 <= p2)
{
/* 交換頭字符和尾字符 */
char ch;
ch = *p1; *p1 = *p2; *p2 = ch;
p1++; p2--;
}
#endif
/* 再翻轉單個單詞 */
p1 = src; p2 = p1;
while ('\0' != *p2)
{
if (' ' == *p2)
{
char *p;
p = p2 - 1;
REVERSE_WORD(p1, p);
#if 0
while (p1 <= p)
{
char ch;
ch = *p1; *p1 = *p; *p = ch;
p1++; p--;
}
#endif
p2++;
p1 = p2;
}
else
{
p2++;
}
}
/* 翻轉最后一個單詞 */
p2--;
REVERSE_WORD(p1, p2);
#if 0
while (p1 <= p2)
{
char ch;
ch = *p1; *p1 = *p2; *p2 = ch;
p1++; p2--;
}
#endif
return src;
}
/*
* name: main
* params:
* none
* return:
* none
* notes:
* none
*
* author: A.TNG 2006/06/16 10:37
總結
以上是生活随笔為你收集整理的java字母反过来_java之字母反转~~ - Plight - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不含抽象方法的抽象类 java_Java
- 下一篇: android java和c混合编程_C