给定两个字符串 A 和 B ,每个字符串由小写字母组成, 是否有可能选择一些非空字符串s1和s2,其中s1是A的子字符串,s2是B的子字符串,这样s1 + s2是一个回文字符串。这里'+'表示字符串之间的串联。
例如:
Case 1:
A='abc'
B='abc'
解决方案选择s1& s的一种可能方式s2是s1 =“ab”,s2 =“a”使得s1 + s2,即“aba”是回文。
Case 2:
A='a'
B='b'
解决方案:没有办法选择s1& s2使得s1 + s2是回文。
注意: 如果可能,请打印“是”否则打印“否” 找到两个字符串之间的回文子串的算法是什么?
答案 0 :(得分:2)
两个字符串有一个共同的字母是必要的(并且足够)。
def test(a, b):
return not set(a).isdisjoint(set(b))
答案 1 :(得分:0)
此程序可为您发布的问题提供相当好的结果。
#palindromic substrings in Python
s1='potter'
s2='topper'
count=0
print('substring substring allowed \n of s1 \t of s2\tpalindromes')
for m in range(len(s1)):
for n in range(m+1,len(s1)+1): # n > m
subs1=s1[m:n] # substring of s1
l = n-m # length of subs1
print (subs1,'.................................')
for r in range(len(s2)-l+1):
subs2=s2[r:r+l]
print('\t',subs2)
if subs1==subs2[::-1]: # string reversal
print ('\t\t\t',subs1+subs2)
count=count+1
if count==0:
print ('No')
else:
print('Yes')
我在这里基本上做的是获取s1的子串。子串的长度逐渐增加,如'p','po','pot','pott','potte','potter'。并且对应于s1的每个子字符串,我们检查来自另一个字符串s2的相等长度的子字符串。输出的一部分如下所示:
substring substring allowed
of s1 of s2 palindromes
p .................................
t
o
p
pp
p
pp
e
r
po .................................
to
op
poop
pp
pe
er
pot .................................
top
pottop
opp
ppe
per
: : :
: : :
例如,对应于s1中的'pot',我们在s2中得到'top','opp','ppe','per',其长度与'pot'相同。但只有'顶部'反转才能回到'底池'。因此,当'pot'与'top'连接时,它会形成一个回文。类似地,可以从这两个词中获得的其他回文是'pp','poop','pottop','oo','otto','tt','ee'和'rr'。 但是我的程序没有解决制作奇数字母的回文问题。
答案 2 :(得分:0)
您需要记住一件事:从字符串开始:单词对也具有单字符单词;
说明:
现在登录就像
public static int getCountOfPalindromAvailable (String orignalValue){
int count=0;
for (int parent=0; parent< orignalValue.length(); parent++ ){
for (int child=parent; child <orignalValue.length(); child++){
System.out.println(orignalValue.substring(parent, child+1) +"
orignalValue");
if (isPalindrom(orignalValue.substring(parent, child+1))){
System.out.println(orignalValue.substring(parent, child+1)+"
isPalindrom");
count+=1;
}
}
}
return count;
}
public static boolean isPalindrom (String orignalValue){
return orignalValue.equals(new StringBuilder(orignalValue).reverse().toString());
}