iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
0
Software Development

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

[One Punch 一拳搞定前後端面試] DAY-03 - 判斷回文

題目

寫一個方法(函式),判斷給的字串是否為回文,
是回文回傳 True,不是回文回傳 False。

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

example:

input 'abghjhgba'
output True

input 'abghjhsdfg'
output False

Java 解法

Java解法1

搭配前一單元字串反轉來完成,直覺且簡單。

用 String 物件的方法 equals() 比較字串是否相同。

public boolean palindromes(String str) {
		String stringReversed = new StringBuilder(str).reverse().toString();

		return str.equals(stringReversed);

	}

Java 解法 2

用 for loop 轉回去,也跟前一單元字串反轉差不多:

public boolean palindromes2(String str) {
		String reversed = "";

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

		return str.equals(reversed);
	}

JavaScript 解法

JS 解法 1

可以搭配前一單元字串反轉來完成,直覺且簡單。

function palindrome(str) {
  const reversedString = str.split('').reverse().join('');
  return reversedString === str;
}

JS 解法 2

使用 Array helper 的 Array.prototype.every() ,檢查每一個與最後倒數幾個。

使用 str.length - 1 - index 來抓對應倒數的 index。

function palindrome(str) {
  return str.split('').every((char, index) => {
    return char === str[str.length - 1 - index];
  })
}

但是 every 會檢查陣列裡每個元素,因為是回文,經過一半後會重複檢查,所以可以只檢查一半就好:

function palindrome(str) {
  return str
    .split("", str.length / 2)
    .every((char, index) => char === str[str.length - 1 - index]);
}

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


上一篇
[One Punch 一拳搞定前後端面試] DAY-02 - 字串反轉
下一篇
[One Punch 一拳搞定前後端面試] DAY-04 - 出現最多次
系列文
One Punch 一拳搞定前後端面試30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言