如何解决第 n 个奇数回文数
下面是第n个偶数回文的代码,但我想知道第n个奇数回文的代码。
#include <bits/stdc++.h>
using namespace std;
// Function to find nth even length Palindrome
string evenlength(string n)
{
// string r to store resultant
// palindrome. Initialize same as s
string res = n;
// In this loop string r stores
// reverse of string s after the
// string s in consecutive manner .
for (int j = n.length() - 1; j >= 0; --j)
res += n[j];
return res;
}
// Driver code
int main()
{
string n = "10";
// Function call
cout << evenlength(n);
return 0;
}
解决方法
如果您想要奇数长度回文(即 101
用于输入 10
或 1234321
用于输入 1234
),您可以替换for 循环:
for (int j = static_cast<int>(n.size()) - 2; j >= 0; --j)
res += n[j];
(注意 n.length() - 2
而不是 n.length() - 1
)
当添加反向版本时,这将跳过最后一个字符,以便最后一个数字只出现一次。
,既然你想把输入作为一个字符串并返回一个字符串,你也可以创建一个新的变量作为输入的子字符串(忽略最后一位),将其反转并连接并返回。
string Oddlength(string a)
{
string b;
b=a.substr(0,a.size()-1);
reverse(b.begin(),b.end());
a+=b;
return a;
}
这是有效的,因为第 n(n>10) 个奇数回文数只是与忽略最后一位数字的相反数连接的数字。而对于 (n
所以第 120 个奇数回文数是“120”+“21”="12021"。
第 1200 个奇数回文数是“1200”+“021”="1200021"。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。