JAVA算法 回文字符串求教 大侠帮忙 输入一个字符串 比如xcbv123321sdsjhjh 求出最大回文字符串 输出123321 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 function Test() { var r, re; var s = "xcbv123321sdsjhjh"; re = /\d+/ig; // 创建正则表达式模式。r = s.match(re); alert(r);// 尝试去匹配搜索字符串。return r;} public static void main(String[] args) { String str = "xcbv12344321sdsjhjh"; String result = ""; for(int i = 0; i < str.length(); i++) { //检查12321的情况 result = check(result, str, i - 1, i+1); //检查123321的情况 result = check(result, str, i, i+1); } System.out.println(result);}private static String check(String result, String str, int start, int end) { while(start >= 0 && end < str.length()) { if(str.charAt(start) != str.charAt(end)) break; start--; end++; } start++; end--; if(start != end) { String tmp = str.substring(start, end + 1); if(tmp.length() > result.length()) result = tmp; } return result;} 随便写就是了:public class Test { public static String maxPalindrome(String content) { if(content==null) return null; if(content.length()==0) return ""; int index = 0; int length = 0; int i, j; for(i = 0; i<content.length(); i++) { for(j=1; 0<=i-j && i+j<content.length(); j++) { if(content.charAt(i-j)!=content.charAt(i+j)) { break; } } if(length < 2*j-1) { index = i-j+1; length = 2*j-1; } } for(i = 0; i<content.length(); i++) { for(j=0; 0<=i-j && i+1+j<content.length(); j++) { if(content.charAt(i-j)!=content.charAt(i+1+j)) { break; } } if(length < 2*j) { index = i-j+1; length = 2*j; } } return content.substring(index, index+length); } public static void main(String args[]) { System.out.println(maxPalindrome(null)); System.out.println(maxPalindrome("")); System.out.println(maxPalindrome("1")); System.out.println(maxPalindrome("11")); System.out.println(maxPalindrome("12")); System.out.println(maxPalindrome("abcbaabddeda")); System.out.println(maxPalindrome("xcbv12321sdsjhjh")); System.out.println(maxPalindrome("xcbv123321sdsjhjh")); }}遍历字符串中的每个字符,从当前字符向两边扩散,找最长串。 求助:谁能帮忙把这这道题用java编出来,先谢啦。设计并实现一个windows系统中的“计算器”的窗口及功能。要求:至少要有0——9时个数字按钮,可以实现加,减,乘,除四运算。 以下程序测试通过!===========public class Test{ public static void main(String[] args) throws Exception { //String str="abb"; String str="xcbv123321sdsjhjh"; System.out.println(getSString(str)); } public static String getSString(String str) { int middle=1,len=0; int lMiddle=1,lLen=0; boolean flag=false; for(int i=0;i<str.length();i++) { middle=i; len=0; //偶数长回文 while(i-len>=0&&i+len+1<str.length()&& str.charAt(i-len)==str.charAt(i+len+1)) len++; if(len>lLen||(flag==false&&len==lLen)){ lLen=len; lMiddle=middle; flag=true; } middle=i; len=1; //奇数长回文 while(i-len>=0&&i+len<str.length()&& str.charAt(i-len)==str.charAt(i+len)) len++; if(len>lLen){ lLen=len; lMiddle=middle; flag=false; } } if(flag) return str.substring(lMiddle-lLen+1, lMiddle+lLen+1); else return str.substring(lMiddle-lLen+1, lMiddle+lLen); }} 50分问题 线程同步的疑问 求一正则表达式,判断字符串中是否包含非法字符 JAVA如何实现删除远程FTP服务器上的某一文件?各位高人帮帮忙 请教各位高手!! 嘿,这个问题蛮奇怪! 很小的问题! 求助:分数比大小~~ JAVA中的Hashtable怎样用? 学了一段java,却发现非常迷茫,放分!! 关于构造方法的调用问题 请大家帮我看看这个java题那里错了
var r, re;
var s = "xcbv123321sdsjhjh";
re = /\d+/ig;
// 创建正则表达式模式。
r = s.match(re);
alert(r);
// 尝试去匹配搜索字符串。
return r;
}
String str = "xcbv12344321sdsjhjh";
String result = "";
for(int i = 0; i < str.length(); i++) {
//检查12321的情况
result = check(result, str, i - 1, i+1);
//检查123321的情况
result = check(result, str, i, i+1);
}
System.out.println(result);
}private static String check(String result, String str, int start, int end) {
while(start >= 0 && end < str.length()) {
if(str.charAt(start) != str.charAt(end))
break;
start--;
end++;
}
start++;
end--;
if(start != end) {
String tmp = str.substring(start, end + 1);
if(tmp.length() > result.length())
result = tmp;
}
return result;
}
if(content==null)
return null;
if(content.length()==0)
return "";
int index = 0;
int length = 0; int i, j;
for(i = 0; i<content.length(); i++) {
for(j=1; 0<=i-j && i+j<content.length(); j++) {
if(content.charAt(i-j)!=content.charAt(i+j)) {
break;
}
}
if(length < 2*j-1) {
index = i-j+1;
length = 2*j-1;
}
}
for(i = 0; i<content.length(); i++) {
for(j=0; 0<=i-j && i+1+j<content.length(); j++) {
if(content.charAt(i-j)!=content.charAt(i+1+j)) {
break;
}
}
if(length < 2*j) {
index = i-j+1;
length = 2*j;
}
}
return content.substring(index, index+length);
}
public static void main(String args[]) {
System.out.println(maxPalindrome(null));
System.out.println(maxPalindrome(""));
System.out.println(maxPalindrome("1"));
System.out.println(maxPalindrome("11"));
System.out.println(maxPalindrome("12"));
System.out.println(maxPalindrome("abcbaabddeda"));
System.out.println(maxPalindrome("xcbv12321sdsjhjh"));
System.out.println(maxPalindrome("xcbv123321sdsjhjh"));
}}
遍历字符串中的每个字符,从当前字符向两边扩散,找最长串。
设计并实现一个windows系统中的“计算器”的窗口及功能。要求:至少要有0——9时个数字按钮,可以实现加,减,乘,除四运算。
===========
public class Test
{
public static void main(String[] args) throws Exception
{
//String str="abb";
String str="xcbv123321sdsjhjh";
System.out.println(getSString(str));
} public static String getSString(String str)
{
int middle=1,len=0;
int lMiddle=1,lLen=0;
boolean flag=false;
for(int i=0;i<str.length();i++)
{
middle=i;
len=0;
//偶数长回文
while(i-len>=0&&i+len+1<str.length()&&
str.charAt(i-len)==str.charAt(i+len+1))
len++;
if(len>lLen||(flag==false&&len==lLen)){
lLen=len;
lMiddle=middle;
flag=true;
}
middle=i;
len=1;
//奇数长回文
while(i-len>=0&&i+len<str.length()&&
str.charAt(i-len)==str.charAt(i+len))
len++;
if(len>lLen){
lLen=len;
lMiddle=middle;
flag=false;
}
}
if(flag) return str.substring(lMiddle-lLen+1, lMiddle+lLen+1);
else return str.substring(lMiddle-lLen+1, lMiddle+lLen);
}
}