考试题目,有关字符串,请教? 他不一定要用这种专门的类,就是一个算法,让你自己去写,用一些最基本的类型就可以了如int,string,数组等主要考的是算法阿, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己算法这方面比较差阿,那位ggdd or jjmm帮忙啦 1、 String str = "abcdefgh"; char[] a1 = str.toCharArray(); char b; for(int i=0;i<(a1.length/2);i++){ b = a1[i]; a1[i] = a1[a1.length-i-1]; a1[a1.length-i-1] = b; } str = new String(a1);2、正在写 2里面的“连续相同且最大”,是连续的数量最大,好是字符串的compareTo最大呀 String str = "abcccdefffff"; char[] a1 = str.toCharArray(); int i1,i2,j1,j2; j1=0; j2=0; i1=0; i2=0; for(int i=0;i<a1.length-1;i++){ if(a1[i]==a1[i+1]){ i1 = i; while((i<a1.length-1)&&(a1[i]==a1[i+1])){ i++; } i2=i; if((j2-j1)<(i2-i1)){ j2 = i2; j1 = i1; } } } str = new String(a1,j1,j2-j1+1); 第一问题:import javax.swing.*;public class Reverse{ public static void main(String[] args) { String str = JOptionPane.showInputDialog("Please input a string:"); int len = str.length(); char s[] = str.toCharArray(); char result[] = new char[len]; int i; for(i=0;i<len;i++) { result[i] = s[len-1-i]; } str = new String(result); System.out.println(str); System.exit(0); }}第二个问题就留给楼主自己解决吧 jockhuang(黄昏) 的第二个算法不错。也许可以把a1.length-1提到循环外面。算法方面怕是难以改进了。 第一个还比较好实现import javax.swing.*;public class reg{ public static void main(String[] args) { String str,stre; if (args.length==0 or args==null) { JOptionPane.showMessageDialog(null,"请输入要进行操作的字符串!"); return; } else { str=args[0]; stre=reversString(str); System.out.println("反转后为:"+stre); } } public static String reversString(String str) { String results=""; int i=0; for(i=str.length()-1;i>=0;i--) {results+=str.substring(i,i+1);} return results; }} to jockhuang(黄昏)你的算法好像不对阿,我把你的程序考下去以后,输入abcdbcdefbcdefg按题意应该是bedefbcdef输出才对阿我的输出就是a是不是我理解题意错误阿? class testString{ public static void main(String[] args) { String name="1234567"; String str=new String(); String s=null; char[] c=new char[name.length()+1]; for(int i=0;i<name.length();i++) { c[name.length()-i]=name.charAt(i); s=str.copyValueOf(c); } System.out.println(s); }} public class StringReverse { public static void main(String[] args) { StringReverse strRe = new StringReverse(); String strReversed = strRe.getReversed("abcdefg"); System.out.println("-------------" + strReversed); String strDoubleMax = strRe.getDoubleMax("abkkbdeefghh"); System.out.println("-------------" + strDoubleMax); } /** * @param string * @return */ private String getDoubleMax(String strTemp) { char[] chTemp = new char[2]; int intMax = -1; for (int i=0; i<strTemp.length(); i++) { int j=i+1; if (j<strTemp.length()) { if (strTemp.charAt(i)==strTemp.charAt(i+1) && strTemp.charAt(i) > intMax) { chTemp[0] = strTemp.charAt(i); chTemp[1] = strTemp.charAt(i); intMax = strTemp.charAt(i); i++; continue; } } } String strResult = String.valueOf(chTemp); return strResult; } /** * @param string * @return */ private String getReversed(String strTemp) { char[] chTemp = new char[strTemp.length()]; for (int i=0; i<strTemp.length(); i++) { chTemp[strTemp.length()-1-i] = strTemp.charAt(i); } String strResult = String.valueOf(chTemp); return strResult; }}我希望这道题可以供大家参考,而不是just copy。还有,也许还存在一些问题。 第一个问题,用StringBuffer.reverse()即可;第二个问题,没有现成的,只能自己写,思路如下:1.找到第一个连续的串;2.将其保存到临时变量temp中;3.找第二个连续的串,与temp比较,把大的保存到temp中;4.依次类推,直到找不到连续的串为止;返回temp,如果一个连续的串没有找到,返回null或抛出异常。 我同意jockhuang(黄昏)的zhouhouqu(潇湘夜雨) 的理解有误的哦?按你的那种理解,算法就可复杂了。初步估计是模式匹配算法的3次方复杂度。有兴趣大家讨论一下。 muymuy(muy) 理解也有问题哦? 按jockhuang(黄昏)的理解还算比较好实现(至少理论上)以我的理解的话我是无从下手了,这个算法倒是大家可以讨论一下哦感觉是应该很复杂的 求调用clone这个方法的内存分析图! 关于powerdesigner数据建模的一些问题,求大虾解答 recv failed 面试题:在MVC 模型中,控制层可以控制视图层或者控制层可以控制model层吗? 变量声明与赋值的问题 大家进来帮我想个办法吧!问题很急! Eclipse In Action Sample java做的东西运行速度很慢是吗 小弟是新手,这里一个问题,请帮忙看看,怎么解决? **************APPLET与FRAME超级难题************************** system property是存放在哪里的? 有个小课题等你来挑战!
String str = "abcdefgh";
char[] a1 = str.toCharArray();
char b;
for(int i=0;i<(a1.length/2);i++){
b = a1[i];
a1[i] = a1[a1.length-i-1];
a1[a1.length-i-1] = b;
}
str = new String(a1);
2、正在写
char[] a1 = str.toCharArray();
int i1,i2,j1,j2;
j1=0;
j2=0;
i1=0;
i2=0;
for(int i=0;i<a1.length-1;i++){
if(a1[i]==a1[i+1]){
i1 = i; while((i<a1.length-1)&&(a1[i]==a1[i+1])){
i++;
}
i2=i;
if((j2-j1)<(i2-i1)){
j2 = i2;
j1 = i1;
}
}
}
str = new String(a1,j1,j2-j1+1);
import javax.swing.*;public class Reverse
{
public static void main(String[] args)
{
String str = JOptionPane.showInputDialog("Please input a string:");
int len = str.length(); char s[] = str.toCharArray();
char result[] = new char[len]; int i; for(i=0;i<len;i++)
{
result[i] = s[len-1-i];
}
str = new String(result);
System.out.println(str);
System.exit(0);
}
}
第二个问题就留给楼主自己解决吧
算法方面怕是难以改进了。
import javax.swing.*;
public class reg
{
public static void main(String[] args)
{
String str,stre;
if (args.length==0 or args==null)
{ JOptionPane.showMessageDialog(null,"请输入要进行操作的字符串!");
return;
}
else
{
str=args[0];
stre=reversString(str);
System.out.println("反转后为:"+stre);
}
}
public static String reversString(String str)
{
String results="";
int i=0;
for(i=str.length()-1;i>=0;i--)
{results+=str.substring(i,i+1);}
return results;
}
}
你的算法好像不对阿,我把你的程序考下去以后,
输入abcdbcdefbcdefg
按题意应该是bedefbcdef输出才对阿
我的输出就是a
是不是我理解题意错误阿?
{
public static void main(String[] args)
{
String name="1234567";
String str=new String();
String s=null;
char[] c=new char[name.length()+1]; for(int i=0;i<name.length();i++)
{
c[name.length()-i]=name.charAt(i);
s=str.copyValueOf(c);
} System.out.println(s);
}
}
StringReverse strRe = new StringReverse();
String strReversed = strRe.getReversed("abcdefg");
System.out.println("-------------" + strReversed);
String strDoubleMax = strRe.getDoubleMax("abkkbdeefghh");
System.out.println("-------------" + strDoubleMax);
} /**
* @param string
* @return
*/
private String getDoubleMax(String strTemp) {
char[] chTemp = new char[2];
int intMax = -1;
for (int i=0; i<strTemp.length(); i++) {
int j=i+1;
if (j<strTemp.length()) {
if (strTemp.charAt(i)==strTemp.charAt(i+1) && strTemp.charAt(i) > intMax) {
chTemp[0] = strTemp.charAt(i);
chTemp[1] = strTemp.charAt(i);
intMax = strTemp.charAt(i);
i++;
continue;
}
}
}
String strResult = String.valueOf(chTemp);
return strResult;
} /**
* @param string
* @return
*/
private String getReversed(String strTemp) {
char[] chTemp = new char[strTemp.length()];
for (int i=0; i<strTemp.length(); i++) {
chTemp[strTemp.length()-1-i] = strTemp.charAt(i);
}
String strResult = String.valueOf(chTemp);
return strResult;
}
}
我希望这道题可以供大家参考,而不是just copy。还有,也许还存在一些问题。
1.找到第一个连续的串;
2.将其保存到临时变量temp中;
3.找第二个连续的串,与temp比较,把大的保存到temp中;
4.依次类推,直到找不到连续的串为止;返回temp,如果一个连续的串没有找到,返回null或抛出异常。
zhouhouqu(潇湘夜雨) 的理解有误的哦?按你的那种理解,算法就可复杂了。
初步估计是模式匹配算法的3次方复杂度。有兴趣大家讨论一下。 muymuy(muy) 理解也有问题哦?
以我的理解的话我是无从下手了,这个算法倒是大家可以讨论一下哦
感觉是应该很复杂的