これはかなり一般的です。難しそうに思えますが、よく考えてみるとそれほど悪くありません。
文字列が回文かどうかをチェックする golang 関数を作成します。
回文は、逆にしても同じ文字のシーケンスです。例:
「aba」は回文です
「アブは
「ab a」はほとんどの場合回文とみなされ、空白は無視されます。
func PalindromeCheck(str string) bool { trimmedStr := strings.ReplaceAll(str, " ", "") len := len(trimmedStr) chars := []rune(trimmedStr) for i := 0; i < len/2; i++ { if chars[i] != chars[len-i-1] { return false } } return true }
このソリューションは、オンラインで検索したときに C または Java で見つかるものと機能的には同じです。基本的にデュアル ポインタを使用して、最初から最後までトラバースして不一致の文字を探します。不一致が見つかった場合、その文字列は回文ではないと宣言できます。
もっと改善できないでしょうか?
strings.ReplaceAllを使用するよりも空白をトリミングするより良い方法はありますか? (ありますが、醜くなる可能性があります)
[]ルーンへの変換効率についてはどうでしょうか。もっと良い方法はありますか?
コメント欄に意見を投稿してください。
ありがとうございます!
この投稿とこのシリーズのすべての投稿のコードはここにあります
以上が文字列を回文チェックするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。