我想知道如何在javascript中编写回文,我输入不同的单词和程序显示单词是否是回文。例如,单词中午是回文,而坏则不是。
提前谢谢。
答案 0 :(得分:43)
function palindrome(str) {
var len = str.length;
var mid = Math.floor(len/2);
for ( var i = 0; i < mid; i++ ) {
if (str[i] !== str[len - 1 - i]) {
return false;
}
}
return true;
}
如果指定的字是回文, palindrome
会返回,基于boolean
值(true / false)
<强>更新强>
由于效果的原因,我在这个问题上打开了赏金,我做了研究,结果如下:
如果我们处理大量数据,例如
var abc = "asdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfd";
for ( var i = 0; i < 10; i++ ) {
abc += abc; // making string even more larger
}
function reverse(s) { // using this method for second half of string to be embedded
return s.split("").reverse().join("");
}
abc += reverse(abc); // adding second half string to make string true palindrome
在此示例中,回文为真,只需注意
发布回文函数给出时间从180到210毫秒(在当前示例中),并在下面发布函数
使用string == string.split('').reverse().join('')
方法可以得到980到1010毫秒。
机器详细信息:
系统: Ubuntu 13.10 操作系统类型: 32位 RAM: 2 Gb CPU: 3.4 Ghz * 2 浏览器: Firefox 27.0.1
答案 1 :(得分:13)
试试这个:
var isPalindrome = function (string) {
if (string == string.split('').reverse().join('')) {
alert(string + ' is palindrome.');
}
else {
alert(string + ' is not palindrome.');
}
}
document.getElementById('form_id').onsubmit = function() {
isPalindrome(document.getElementById('your_input').value);
}
所以这个脚本会警告结果,是不是回文。您需要更改带有输入ID的your_id
和带有您的表单ID的form_id
才能使其正常工作。
答案 2 :(得分:9)
使用类似的东西
function isPalindrome(s) {
return s == s.split("").reverse().join("") ? true : false;
}
alert(isPalindrome("noon"));
或者上面的代码可以优化为[右折叠评论后更新]
function isPalindrome(s) {
return s == s.split("").reverse().join("");
}
alert(isPalindrome("malayalam"));
alert(isPalindrome("english"));
答案 3 :(得分:6)
看看这个:
function isPalindrome(word){
if(word==null || word.length==0){
// up to you if you want true or false here, don't comment saying you
// would put true, I put this check here because of
// the following i < Math.ceil(word.length/2) && i< word.length
return false;
}
var lastIndex=Math.ceil(word.length/2);
for (var i = 0; i < lastIndex && i< word.length; i++) {
if (word[i] != word[word.length-1-i]) {
return false;
}
}
return true;
}
编辑:现在执行了一半的比较操作,因为我只迭代最多半个字来将它与单词的最后部分进行比较。更快的大数据!!!
由于字符串是char数组,因此无需使用charAt函数!!!
答案 4 :(得分:6)
更快的方式:
- 计算循环的一半。
- 存储变量中单词的长度,而不是每次计算。
编辑: 将字长/ 2存储在临时变量中,以便不按(mvw)所指示的每次循环计算。
function isPalindrome(word){
var i,wLength = word.length-1,wLengthToCompare = wLength/2;
for (i = 0; i <= wLengthToCompare ; i++) {
if (word.charAt(i) != word.charAt(wLength-i)) {
return false;
}
}
return true;
}
答案 5 :(得分:4)
让我们从回文的递归定义开始:
此定义可直接编码为JavaScript:
function isPalindrome(s) {
var len = s.length;
// definition clauses 1. and 2.
if (len < 2) {
return true;
}
// note: len >= 2
// definition clause 3.
if (s[0] != s[len - 1]) {
return false;
}
// note: string is of form s = 'a' + t + 'a'
// note: s.length >= 2 implies t.length >= 0
var t = s.substr(1, len - 2);
return isPalindrome(t);
}
以下是MongoDB的 mongo JavaScript shell的一些额外测试代码,在带有调试器的Web浏览器中将 print()替换为 console.log ()
function test(s) {
print('isPalindrome(' + s + '): ' + isPalindrome(s));
}
test('');
test('a');
test('ab');
test('aa');
test('aab');
test('aba');
test('aaa');
test('abaa');
test('neilarmstronggnortsmralien');
test('neilarmstrongxgnortsmralien');
test('neilarmstrongxsortsmralien');
我得到了这个输出:
$ mongo palindrome.js
MongoDB shell version: 2.4.8
connecting to: test
isPalindrome(): true
isPalindrome(a): true
isPalindrome(ab): false
isPalindrome(aa): true
isPalindrome(aab): false
isPalindrome(aba): true
isPalindrome(aaa): true
isPalindrome(abaa): false
isPalindrome(neilarmstronggnortsmralien): true
isPalindrome(neilarmstrongxgnortsmralien): true
isPalindrome(neilarmstrongxsortsmralien): false
迭代解决方案是:
function isPalindrome(s) {
var len = s.length;
if (len < 2) {
return true;
}
var i = 0;
var j = len - 1;
while (i < j) {
if (s[i] != s[j]) {
return false;
}
i += 1;
j -= 1;
}
return true;
}
答案 6 :(得分:3)
捅了一下。但是,有点难以衡量表现。
function palin(word) {
var i = 0,
len = word.length - 1,
max = word.length / 2 | 0;
while (i < max) {
if (word.charCodeAt(i) !== word.charCodeAt(len - i)) {
return false;
}
i += 1;
}
return true;
}
我的想法是使用charCodeAt()
代替charAt()
,希望分配Number
代替String
会有更好的性能,因为String
是可变长度,分配可能更复杂。此外,只需迭代一半(as noted by sai),因为这就是所需要的。此外,如果长度为奇数(例如:'aba'
),则中间字符始终正常。
答案 7 :(得分:2)
尝试
isPalindrome = (string) => {
if (string === string.split('').reverse().join('')) {
console.log('is palindrome');
}
else {
console.log('is not palindrome');
}
}
isPalindrome(string)
答案 8 :(得分:2)
String.prototype.isPalindrome = function isPalindrome() {
const cleanString = this.toLowerCase().replace(/\s+/g, '');
const cleanStringRevers = cleanString.split("").reverse().join("");
return cleanString === cleanStringRevers;
}
let nonPalindrome = 'not a palindrome';
let palindrome = 'sugus';
console.log(nonPalindrome.isPalindrome())
console.log(palindrome.isPalindrome())
答案 9 :(得分:2)
解决技术测试时最重要的事情是不要使用快捷方式 - 他们希望通过算法来了解您的想法!不是你使用的方法。
这是我提出的一个(我吹了测试后45分钟)。尽管如此,还是有一些优化。在编写任何算法时,最好假定false
并在其看起来为true
时更改逻辑。
<强> isPalindrome()
强>
基本上,要使其以 O(N)(线性)复杂度运行,您需要有2个迭代器,其向量指向彼此。意思是,一个从开始处开始的迭代器和一个从结尾开始的迭代器,每个都向内移动。你可以让迭代器遍历整个数组,并在它们在中间相遇时使用条件break
/ return
,但它可以节省一些工作只给每个迭代器一个半长默认情况下。
for
循环似乎强制使用更多检查,因此我使用while
循环 - 我不太习惯。
以下是代码:
/**
* TODO: If func counts out, let it return 0
* * Assume !isPalindrome (invert logic)
*/
function isPalindrome(S){
var s = S
, len = s.length
, mid = len/2;
, i = 0, j = len-1;
while(i<mid){
var l = s.charAt(i);
while(j>=mid){
var r = s.charAt(j);
if(l === r){
console.log('@while *', i, l, '...', j, r);
--j;
break;
}
console.log('@while !', i, l, '...', j, r);
return 0;
}
++i;
}
return 1;
}
var nooe = solution('neveroddoreven'); // even char length
var kayak = solution('kayak'); // odd char length
var kayaks = solution('kayaks');
console.log('@isPalindrome', nooe, kayak, kayaks);
请注意,如果循环计数,则返回true
。应该反转所有逻辑,以便默认返回false
。我也使用了一种捷径方法String.prototype.charAt(n)
,但我觉得这很好,因为每种语言本身都支持这种方法。
答案 10 :(得分:2)
检查字符串的最佳方法是使用更多标准(例如案例和特殊字符)的回文...
function checkPalindrom(str) {
var str = str.replace(/[^a-zA-Z0-9]+/gi, '').toLowerCase();
return str == str.split('').reverse().join('');
}
您可以使用以下单词和字符串对其进行测试,并为您提供更具体的结果 bob 文件,请注意,我不同意。快速永远不会阻止肥胖。我吃鳕鱼
对于字符串,它会忽略特殊字符并将字符串转换为小写。
答案 11 :(得分:1)
这里是一个不使用String.reverse的单行,
const isPal = str => Array
.apply(null, new Array(strLen = str.length))
.reduce((acc, s, i) => acc + str[strLen - (i + 1)], '') === str;
答案 12 :(得分:1)
I think following function with time complexity of o(log n) will be better.
function palindrom(s){
s = s.toString();
var f = true; l = s.length/2, len = s.length -1;
for(var i=0; i < l; i++){
if(s[i] != s[len - i]){
f = false;
break;
}
}
return f;
}
console.log(palindrom(12321));
答案 13 :(得分:1)
str1
是原始字符串,其中包含已删除的非字母数字字符和空格,str2
是原始字符串已反转。
function palindrome(str) {
var str1 = str.toLowerCase().replace(/\s/g, '').replace(
/[^a-zA-Z 0-9]/gi, "");
var str2 = str.toLowerCase().replace(/\s/g, '').replace(
/[^a-zA-Z 0-9]/gi, "").split("").reverse().join("");
if (str1 === str2) {
return true;
}
return false;
}
palindrome("almostomla");
答案 14 :(得分:1)
第一位,我通过转换小写并去除空格来验证此单词,然后与参数单词中的反向单词进行比较。
function isPalindrome(input) {
const toValid = input.trim("").toLowerCase();
const reverseWord = toValid.split("").reverse().join("");
return reverseWord == input.toLowerCase().trim() ? true : false;
}
isPalindrome(" madam ");
//true
答案 15 :(得分:1)
此功能将删除所有非字母数字字符(标点符号,空格和符号),并将所有小写字母翻转以检查回文。
function palindrome(str){
var re = /[^A-Za-z0-9]/g;
str = str.toLowerCase().replace(re, '');
return str == str.split('').reverse().join('') ? true : false;
}
答案 16 :(得分:1)
function isPalindrome(s,i) {
return (i=i||0)<0||i>=s.length>>1||s[i]==s[s.length-1-i]&&isPalindrome(s,++i);
}
答案 17 :(得分:1)
这个怎么样?
function pall (word) {
var lowerCWord = word.toLowerCase();
var rev = lowerCWord.split('').reverse().join('');
return rev.startsWith(lowerCWord);
}
pall('Madam');
答案 18 :(得分:1)
function palindrome(str) {
var lenMinusOne = str.length - 1;
var halfLen = Math.floor(str.length / 2);
for (var i = 0; i < halfLen; ++i) {
if (str[i] != str[lenMinusOne - i]) {
return false;
}
}
return true;
}
针对半字符串解析和常量值变量进行了优化。
答案 19 :(得分:1)
function palindrome(str) {
var re = /[^A-Za-z0-9]/g;
str = str.toLowerCase().replace(re, '');
var len = str.length;
for (var i = 0; i < len/2; i++) {
if (str[i] !== str[len - 1 - i]) {
return false;
}
}
return true;
}
答案 20 :(得分:0)
function isPalindrome(word) {
let strLen = word.length;
word = word.toLocaleLowerCase();
if (strLen === 0 || strLen === 1) {
return true;
}
if (word[0] === word[strLen - 1]) {
return isPalindrome(word.slice(1, strLen - 1) );
}
return false;
}
答案 21 :(得分:0)
function reversName(name){
return name
.split('')
.reverse()
.join('') === name ;
};
console.log(reversName('suus'));
console.log(reversName('suusss'));
答案 22 :(得分:0)
/ *以下功能完成以下任务。
1. Fetch all the substrings of a given string.
2. Find which of the substrings are palindromes.
3. Find the longest palindrome.
4. Find if the longest palindrome is a lucky palindrome.
*/
function SubstringMnipulations(S) {
let Str = S.toString();
let AllSubStrs = splitSubstrings(Str);
let Pelindromes = arePelindrome(AllSubStrs);
let LongestPelindrome = getLongestString(Pelindromes);
let isPrimeVar = isPrime(LongestPelindrome);
return {
"possibleSubstrings": AllSubStrs,
"pelindromes": Pelindromes,
"longestPelindrome": LongestPelindrome,
"isLuckyPelindrome": isPrimeVar
};
}
function splitSubstrings(Str) {
let StrLength = Str.length;
let maxIndex = StrLength;
let AllSubStrs = [];
for(var index = 0; index < maxIndex; index++ ) {
for(var innerIndex = 1; innerIndex <= maxIndex-index; innerIndex++) {
AllSubStrs.push(Str.substring(index, (index+innerIndex)));
}
}
return AllSubStrs;
}
function arePelindrome(StrArr) {
let pelindrome = [];
for(i=0; i<StrArr.length;i++) {
if(isPelindrome(StrArr[i])) {
if(StrArr[i].length>1) {
pelindrome.push(StrArr[i]);
}
}
}
return pelindrome;
}
function isPelindrome(Str) {
let strLen = Str.length;
let firstHalfIndex = 0;
if(strLen==1) {
return true;
}
let firstHalf = "";
let secondHalf = "";
if(strLen>1 && strLen%2==0) {
firstHalfIndex = strLen/2;
firstHalf = Str.substring(0, firstHalfIndex);
secondHalf = Str.substring((firstHalfIndex), strLen);
} else {
firstHalfIndex = (strLen-1)/2;
firstHalf = Str.substring(0, firstHalfIndex);
secondHalf = Str.substring((1+firstHalfIndex), strLen);
}
secondHalf = reverseString(secondHalf);
return firstHalf === secondHalf;
}
function reverseString(Str) {
return Str.split("").reverse().join("");
}
function getLongestString(Str) {
let lengthCount = [];
for(i=0; i<Str.length;i++) {
lengthCount.push(Str[i].length);
}
return Str[lengthCount.indexOf(Math.max(...lengthCount))];
}
function isPrime(Str) {
let input = Str.length;
let prime = true;
for (let i = 2; i <= Math.sqrt(input); i++) {
if (input % i == 0) {
prime = false;
break;
}
}
return prime && (input > 1);
}
答案 23 :(得分:0)
function palindrome(str) {
var re = /[\W_]/g; // or var re = /[^A-Za-z0-9]/g;
var lowRegStr = str.toLowerCase().replace(re, '');
var reverseStr = lowRegStr.split('').reverse().join('');
return reverseStr === lowRegStr;
}
palindrome("Eye Eye");
答案 24 :(得分:0)
我使用的是:-
function isPalindrome(arg){
for(let i=0;i<arg.length;i++){
if(arg[i]!==arg[(arg.length-1)-i])
return false;
return true;
}}
答案 25 :(得分:0)
这是一个1行程序,用于检查您的字符串是否是回文:-
((s) => `Is ${s} a palindrome ? \n Answer is :- ${s.split('').reverse().join('') == s}`)('bob')
只需修改此IIFE的最后一个参数即可检查不同的输入。这也许是最好的解决方案。
答案 26 :(得分:0)
function isPalindrome(str) {
var isPalindrome = true;
if(str.length === 2){
return isPalindrome;
}
for(let i = 0, d = str.length - 1; i<(d-i); i++ )
{
if(str[i] !== str[d - i] ){
return !isPalindrome
}
}
return isPalindrome
}
答案 27 :(得分:0)
这是使用ES6功能检查弦回文的最佳且强大的解决方案。
const str="madam"
var result=[...str].reduceRight((c,v)=>((c+v)))==str?"Palindrome":"Not Palindrome";
console.log(result);
答案 28 :(得分:0)
使用Array.prototype.every()的替代解决方案
x
答案 29 :(得分:0)
@OnClick(R.id.btnLocaleEng)
public void onLocaleChangedEng(){
Locale english = new Locale("en", "US");
Resources resources = getLocalizedResources(context, english);
title.setText(resources.getString(R.string.title));
...
}
@OnClick(R.id.btnLocaleFi)
public void onLocaleChangedFi(){
Locale english = new Locale("fi", "FI");
Resources resources = getLocalizedResources(context, english);
title.setText(resources.getString(R.string.title));
...
}
@NonNull
public Resources getLocalizedResources(Context context, Locale desiredLocale) {
Configuration conf = context.getResources().getConfiguration();
conf = new Configuration(conf);
conf.setLocale(desiredLocale);
Context localizedContext = context.createConfigurationContext(conf);
return localizedContext.getResources();
}
答案 30 :(得分:0)
这个答案很容易阅读,我试着用评论来解释。查看下面的代码,了解如何在 JavaScript 中编写回文。 步骤 1:使用 replace() 从参数字符串 'str' 中删除所有非字母数字字符(标点、空格和符号),然后使用 toLowerCase() 将其转换为小写。 第 2 步:现在使字符串反转。首先使用 split() 将字符串拆分为数组,然后使用 reverse() 反转数组,然后通过使用 join() 连接数组元素来制作字符串。 第 3 步:使用 charAt(0) 查找 nonAlphaNumeric 字符串的第一个字符。 步骤 4:使用 charAt(nonAlphaNumeric string 的长度 - 1) 找到 nonAlphaNumeric 字符串的最后一个字符。 第 5 步:使用 If 条件来判断 nonAlphaNumeric 字符串和反向字符串是否相同。 第 6 步:使用另一个 If 条件将 nonAlphaNumeric 字符串的第一个字符与 nonAlphaNumeric 字符串的最后一个字符相同。
function palindrome(str) { var nonAlphaNumericStr = str.replace(/[^0-9A-Za-z]/g, "").toLowerCase(); // output - e1y1e var reverseStr = nonAlphaNumericStr.split("").reverse().join(""); // output - e1y1e var firstChar = nonAlphaNumericStr.charAt(0); // output - e var lastChar = nonAlphaNumericStr.charAt(nonAlphaNumericStr.length - 1); // output - e if(nonAlphaNumericStr === reverseStr) { if(firstChar === lastChar) { return `String is Palindrome`; } } return `String is not Palindrome`; } console.log(palindrome("_eye"));
答案 31 :(得分:0)
您可以尝试以n/2
复杂度尝试以下代码
palindrom(word)
{
let len = word.length
let limit = len % 2 ? (len - 1)/2 : (len/2)
for(let i=0; i < limit; i++)
{
if(word[i] != word[len-i-1])
{
alert('non a palindrom')
return
}
}
alert('palindrom')
return;
}
调用函数
palindrom('abba')
答案 32 :(得分:0)
(function (strOne,strTwo) {
var a = strOne.toLowerCase().split("").sort().join("")===
strTwo.toLowerCase().split("").sort().join("");
console.log(a ? ("pallindrome"): ("not a pallindrome"));
})("mommosm","mommom");
答案 33 :(得分:0)
为避免特殊字符出错,请使用以下功能
function palindrome(str){
var removeChar = str.replace(/[^A-Z0-9]/ig, "").toLowerCase();
var checkPalindrome = removeChar.split('').reverse().join('');
if(removeChar === checkPalindrome){
return true;
}else{
return false;
}
}
答案 34 :(得分:0)
注意:这是区分大小写的
function palindrome(word)
{
for(var i=0;i<word.length/2;i++)
if(word.charAt(i)!=word.charAt(word.length-(i+1)))
return word+" is Not a Palindrome";
return word+" is Palindrome";
}
答案 35 :(得分:0)
我不确定这个JSPerf如何检查代码性能。我只是试图扭转字符串&amp;检查值。请评论一下Pros&amp;这种方法的缺点。
function palindrome(str) {
var re = str.split(''),
reArr = re.slice(0).reverse();
for (a = 0; a < re.length; a++) {
if (re[a] == reArr[a]) {
return false;
} else {
return true;
}
}
}
<强> JS Perf test 强>
答案 36 :(得分:0)
function palindrome(str){
for (var i = 0; i <= str.length; i++){
if (str[i] !== str[str.length - 1 - i]) {
return "The string is not a palindrome";
}
}
return "The string IS a palindrome"
}
palindrome("abcdcba"); //"The string IS a palindrome"
palindrome("abcdcb"); //"The string is not a palindrome";
如果你在if语句之前使用console.log这一行:console.log(str[i] + " and " + str[str.length - 1 - i])
,你会看到(str[str.length - 1 - i])
是什么。我认为这是最令人困惑的部分,但是当你在控制台上查看它时,你会很容易理解它。
答案 37 :(得分:0)
这是另一种方法:
function isPalin(str) {
str = str.replace(/\W/g,'').toLowerCase();
return(str==str.split('').reverse().join(''));
}
答案 38 :(得分:0)
下面的代码告诉我们如何从textBox中获取一个字符串并告诉你它是否是一个回文并不是&amp;在另一个文本框中显示您的答案
<html>
<head>
<meta charset="UTF-8"/>
<link rel="stylesheet" href=""/>
</head>
<body>
<h1>1234</h1>
<div id="demo">Example</div>
<a accessKey="x" href="http://www.google.com" id="com" >GooGle</a>
<h1 id="tar">"This is a Example Text..."</h1>
Number1 : <input type="text" name="txtname" id="numb"/>
Number2 : <input type="text" name="txtname2" id="numb2"/>
Number2 : <input type="text" name="txtname3" id="numb3" />
<button type="submit" id="sum" onclick="myfun()" >count</button>
<button type="button" id="so2" onclick="div()" >counnt</button><br/><br/>
<ol>
<li>water</li>
<li>Mazaa</li>
</ol><br/><br/>
<button onclick="myfun()">TryMe</button>
<script>
function myfun(){
var pass = document.getElementById("numb").value;
var rev = pass.split("").reverse().join("");
var text = document.getElementById("numb3");
text.value = rev;
if(pass === rev){
alert(pass + " is a Palindrome");
}else{
alert(pass + " is Not a Palindrome")
}
}
</script>
</body>
</html>
答案 39 :(得分:0)
function palindrome(str) {
var testString = str.toLowerCase();
var expression = /[a-z0-9\^s]/gi;
if (testString.match(expression).reverse().join("") == testString.match(expression).join("")) {
return true;
} else {
return false;
}
}
答案 40 :(得分:0)
您也可以这样做:
function isPalindrome(str) {
var newStr = '';
for(var i = str.length - 1; i >=0; i--) {
newStr += str[i];
}
if(newStr == str) {
return true;
return newStr;
} else {
return false;
return newStr;
}
}
答案 41 :(得分:0)
ES6的做法。请注意,我利用数组方法reduceRight来反转字符串(如果将字符串作为上下文,则可以对字符串使用数组方法,因为低级别 - 字符串是字符数组)。不,它不像其他解决方案那样高效,但没有看到任何使用es6或更高阶函数的答案,所以我想把它扔出去。
ok
答案 42 :(得分:0)
function Palindrome(str) {
let forwardStr = str.toLowerCase().replace(/[\W_]/g, '');
let reversedStr = forwardStr.split('').reverse().join();
return forwardStr === reversedStr;
}
console.log(Palindrome('madam'));
答案 43 :(得分:0)
代码简洁快速且易于理解。
TL; DR
说明:
此处isPalindrome
函数接受str
参数,该参数为typeof string。
如果上述情况为false,则继续执行第二个if语句,并检查字符串0位置的字符是否与最后一个字符相同。它在两者之间进行了不平等测试。
str.charAt(0) // gives us the value of character in string at position 0
str.slice(-1) // gives us the value of last character in the string.
如果不等式结果为真,那么它继续前进并返回false。
isPalindrome(str)
函数,直到最终结果为止。
function isPalindrome(str){
if (str.length <= 1) return true;
if (str.charAt(0) != str.slice(-1)) return false;
return isPalindrome(str.substring(1,str.length-1));
};
document.getElementById('submit').addEventListener('click',function(){
var str = prompt('whats the string?');
alert(isPalindrome(str))
});
document.getElementById('ispdrm').onsubmit = function(){alert(isPalindrome(document.getElementById('inputTxt').value));
}
<!DOCTYPE html>
<html>
<body>
<form id='ispdrm'><input type="text" id="inputTxt"></form>
<button id="submit">Click me</button>
</body>
</html>
答案 44 :(得分:0)
这将测试字符串的每一端都在外面,一旦检测到缺乏对称性就返回false。对于具有奇数字母的单词,不会测试中心字母。
function isPalindrome(word){
var head = 0;
var tail = word.length - 1;
while (head < tail) {
if (word.charAt(head) !== word.charAt(tail)){
return false
} else {
head ++;
tail --;
}
};
return true;
};
答案 45 :(得分:0)
function palindrome(s) {
var re = /[\W_]/g;
var lowRegStr = s.toLowerCase().replace(re, '');
var reverseStr = lowRegStr.split('').reverse().join('');
return reverseStr === lowRegStr;
}
答案 46 :(得分:0)
为了获得更好的性能,您也可以使用此
DateTime myDate = DateTime.Parse("2017-03-01");
var RoundList = (from t1 in entities.RPlays.AsNoTracking()
where t1.Start == myDate && t1.VId == 32
select new
{
TimePlayed = t1.TimePlayed,
MatchPlayed = t1.MatchPlayed
});
答案 47 :(得分:0)
一个简单的一行代码,用于检查字符串是否为回文:
function palindrome (str) {
return str === str.split("").reverse().join("");
}
<!-- Change the argument to check for other strings -->
<button type="button" onclick="alert(palindrome('naman'));">Click Me<utton>
如果字符串是回文,则上述函数将返回true。否则,它将返回false。
答案 48 :(得分:0)
我的简短解决方案,长度为66个字符。结果:是真还是假。
<input type="text" id="temp">
<p id="data">data to copy<p>
<button>Copy</button>
答案 49 :(得分:0)
或者你可以这样做。
pos
答案 50 :(得分:0)
我认为这种实现几乎涵盖了所有情况。我希望它对某人有用:
isPalindrome("nurses run");
isPalindrome("abcdcba");
isPalindrome("hello world");
isPalindrome(" ");
isPalindrome(" ");
isPalindrome("");
isPalindrome(null);
isPalindrome();
isPalindrome(100);
isPalindrome({"name":"John"});
然后你可以尝试这些案例:
{{1}}
答案 51 :(得分:-2)
如何验证数字是否是回文?
我有我的功能,但不正确,因为它用于字符串而不是数字:
function palindrom(str){
for(var i=0;i<str.length;i++){
if(str[i]!==str[str.length-i-1]){
return false;
}
}
return true;
}
console.log(palindrom("121"));
console.log(palindrom("1234321"));
console.log(palindrom("3211432"));