文章來源於公衆號程序員面試現場 ,作者程序員面試現場
字符串逆序,這是非常普遍的一道算法面試題,相信很多刷過算法題的朋友都一定對這個問題並不陌生。
這個問題有很多衍生問題,他的實現方式也有很多。今天,就來教大家一個代碼行數最好的實現方式。
那就是使用遞歸的方式,用1行代碼實現字符串逆序。
代碼如下:
public class MyClass {
public static void main(String args[]) {
System.out.println(reverseString("Hollis is a Coder"));
}
private static String reverseString(String sentense)
{
return sentense.isEmpty() ? sentense:reverseString(sentense.substring(1)) + sentense.charAt(0);
}
}
輸出結果:
redoC a si silloH
如上,核心代碼只有一行,那就是:
return sentense.isEmpty() ? sentense : reverseString(sentense.substring(1)) + sentense.charAt(0);
這行代碼中主要有兩個知識點,分別使用了三目運算符和遞歸。
三目運算符
對於條件表達式b ? x : y,先計算條件b,然後進行判斷。如果b的值爲true,計算x的值,運算結果爲x的值;否則,計算y的值,運算結果爲y的值。
遞歸
程序調用自身的編程技巧稱爲遞歸( recursion)。遞歸做爲一種算法在程序設計語言中廣泛應用。一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法,它通常把一個大型複雜的問題層層轉化爲一個與原問題相似的規模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重複計算,大大地減少了程序的代碼量。
你看懂了嗎?