iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
0
Software Development

One Punch 一拳搞定前後端面試系列 第 2

[One Punch 一拳搞定前後端面試] DAY-02 - 字串反轉

  • 分享至 

  • xImage
  •  

第一題先來一個容易,但您可能想不到的題目...

此文同時發佈於好讀整理版

題目:寫一個方法(函式)把提供的字串,反轉過來。

例如:

ex1: 輸入 'abcde' 輸出 'edcba'
ex2: 輸入 'lkjhsdgf' 輸出 'fgdshjkl'

非常常見的題目。

看答案以前先自己寫寫看吧。

.

.

.

提示: 簡單的迴圈就可以解了!

先來看看 Java 解法:

private static String reverseString(String str) {

		String result = "";

		for(int i = str.length(); i >= 1; i--) {
			result += str.charAt(i-1);
		}

		return result ;
	}

str.length()-1 字串長度 -1 表示原始字串的最後一個字。

Java 主要是用 charAt() 這個方法來找到字串的 index。
然後迴圈從最後一個字元開始,由後往前遞減。

迴圈也可以這樣:

private static String reverseString(String str) {

		String reversed = "";

		for (int i = 0; i <= str.length() -1; i++) {
			reversed = str.charAt(i) + reversed;
		}

		return reversed;
	}

Java 第二種解法,使用 StringBuilder 物件內的 reverse() 方法

private String reverseString(String str){

//		StringBuilder ary = new StringBuilder(str);		
//		ary.reverse();
//		return ary.toString();

//		simplify

		return new StringBuilder(str).reverse().toString();

	}

js 解法,

第一種解法,用迴圈:

function reverseString(str){

let result = '';

for(let i = str.length; i>=1; i--){
  result += str[i-1]
}

return result

}

js 因為可以直接用陣列的方式 str[i-1] 去取得字串的 index ,所以會比較簡短一點。

另外,js 還可以使用字串的內建函數 split, reverse, join 來做,更快速。

迴圈的第二種,這樣也可以:

function reverseString(str) {

  reversed = '';

  for(character of str) {
    reversed = character + reversed;
  }

  return reversed
}

這是 js 的第二種解法:

function reverseString(str){
	const result = str.split('').reverse().join('')
  return result
}

這三個函數功能說明分別如下:

const str = 'abcdef'

// 先用 split 切割成陣列
const strSplit = str.split('');
console.log(strSplit);
// output
// [ 'a', 'b', 'c', 'd', 'e', 'f' ]

// 反轉陣列
const strReverse = strSplit.reverse()
console.log(strReverse)
// output
//[ 'f', 'e', 'd', 'c', 'b', 'a' ]

// 陣列轉回字串
const strJoin = strReverse.join('');
console.log(strJoin);
// output
// fedcba

// 所以可以3個方法一起來
const result = str.split('').reverse().join('')
console.log(result);
// output
// fedcba

js 第三種:用 Array.prototype.reduce()

這個方法要先熟悉 Array.prototype.reduce() 請見 MDN

這方法有點殺雞用牛刀,但可以跟面試官表示你故意使用 reduce() 方法展現一下,讓面試官對你的印象更深一些。

function reverseString(str){
	return str.split('').reduce((rev, char) => char + rev, '');
}

此文同時發佈於好讀整理版


上一篇
[One Punch 一拳搞定前後端面試] DAY-01 - 簡介
下一篇
[One Punch 一拳搞定前後端面試] DAY-03 - 判斷回文
系列文
One Punch 一拳搞定前後端面試30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言