文字列が回文であるかどうかを確認しようとしています。
例:
レーダー=レーダー=TRUE
iwant = tnawi = FALSE
任意の例をいただければ幸いです。
単語が回文であるかどうかを確認したいようです。これを行うには2つの方法があります。単語が逆になっていることに対して単語が等しいかどうかを確認するか、文字が一致するはずの位置に対して文字を確認することができます。
Dartの文字列にはまだreverse()メソッドがないため、2番目のアプローチがおそらく今のところ最も簡単です。
bool isPanlindrome(String word) {
for (int i = 0; i < word.length ~/ 2; i++) {
if (word[i] != word[word.length - i - 1]) return false;
}
return true;
}
Davidが言ったように(Dartではありませんか?)、次のように書くことができます:
bool isPanlindrome(String s) {
return s == reverse(s);
}
String reverse(String s) {
// null or empty
if (s == null|| s.length == 0)
return s;
List<int> charCodes = new List<int>();
for (int i = s.length-1; i>= 0; i-- )
charCodes.addLast(s.charCodeAt(i)) ;
return new String.fromCharCodes(charCodes);
}
reverse()に関する最近の投稿を参照してください
String reverse(String s) {
var chars = s.splitChars();
var len = s.length - 1;
var i = 0;
while (i < len) {
var tmp = chars[i];
chars[i] = chars[len];
chars[len] = tmp;
i++;
len--;
}
return Strings.concatAll(chars);
}
void main() {
var s = "dog";
print(s);
print(reverse(s));
}
ダーツ機能を次のように使用するだけです
bool isPanlindrome(String input){
return input == input.split('').reversed.join();
}