数据结构书上有现成的啊,有个算法,叫什么忘记了,效率是最高的。
做个双循环也是可以实现的,但效率不是最高的。
public Class A(){
String a = "abcdeac";
String b = "ac"; public static void main(String[] args){
char[] charA = a.toCharArray();
char[] charB = b.toCharArray();
Boolean flag;
int k;
int j = 0;
for(int i=0;i<=(charA.length-charB.length);i++){
if(charA[i].equals(charB[0])){
flag = true;
k = i;
j = 0;
while(flag == true){
i++;
j++;
if(charA[i].equals(charB[j])) flag = true;
else flag = false;
if(j == charB[j].length) System.out.println(i);
}
}
}
} }没调试过,不知对否,呵呵
做个双循环也是可以实现的,但效率不是最高的。
public Class A(){
String a = "abcdeac";
String b = "ac"; public static void main(String[] args){
char[] charA = a.toCharArray();
char[] charB = b.toCharArray();
Boolean flag;
int k;
int j = 0;
for(int i=0;i<=(charA.length-charB.length);i++){
if(charA[i].equals(charB[0])){
flag = true;
k = i;
j = 0;
while(flag == true){
i++;
j++;
if(charA[i].equals(charB[j])) flag = true;
else flag = false;
if(j == charB[j].length) System.out.println(i);
}
}
}
} }没调试过,不知对否,呵呵
解决方案 »
- 做了个系统出了个错,求解释
- 正在做BBS毕业设计,寻找需求功能
- spring的依赖注入和代理的区别~
- 求 c# 和 java 的线程的用法 和语法!!
- [Struts1.x]在ActionForm中使用JavaBean的话,怎么用Validator框架验证?
- resin的ssl配置,我只要几个页面需要ssl,不是全局的ssl,怎么操作?
- 用keytool -genkey -alias sso -keyalg RSA -keystore E:\sso.keystore创建一个别名为sso的证书成功。可是当我用keytool -list -alias sso命令查看得时候 为什么会出异常:别名
- struts2 提交验证问题
- 紧急求助!在WorkShop 8.1中创建一个Portal,碰到一个问题,新手!帮Up也给分!谢谢!
- JBuilder9.0 + webLogic7.0 测试sessionBean异常信息?帮忙看看问题是什么
- 求救!!!不胜感激!
- 能不能给我个例子,关于STRUTS配置连接池的。
{
public static void main(String[] args)
{
char[] a ={'a','b','a','c','d'};
char[] b={'a','c','d'};
int flag;
int lenA=String.valueOf(a).length();
int lenB=String.valueOf(b).length();
for(int i=0;i<lenA;i++)
{
flag=0;
if(a[i]==b[0])
{
if(i==lenA-1)
{
flag=1;
break;
}
for(int j=1;j<lenB;j++)
{
if(j>=lenA-i)
{
flag=1;
break;
}
if(a[i+j]!=b[j])
{
flag=1;
break;
}
}
if(flag==0)
{
System.out.println(i);
break;
}
}
}
}
}请问面试什么职位?
charA.length-charB.length
j == charB[j].length
SUN公司什么时候开发了这2个方法???
你去试试,不要乱说哈
只不过第二句可能是他写错了,改为j == charB.length
themaster(独孤行) 的跟源码中的很相似 ,只不过人家 后面的 while 只用了一个 For 语句. 不过作为程序员,基本语法问题出现,真是太不小心了, 会让人家看笑话的 . *^_^* .
public static void IndexOf(String a,String b){
char[] charA = a.toCharArray();
char[] charB = b.toCharArray();
boolean flag;
int k;
int j = 0;
for(int i=0;i<=(charA.length-charB.length);i++){
if(charA[i] == charB[0]){
flag = true;
k = i;
j = 0;
while(flag == true){
k++;
j++;
if(charA[k] == charB[j]) flag = true;
else flag = false;
if(j == charB.length -1) { System.out.println(i); break;}
}
}
}
}
是KMP算法,效率比较高的,具体不记得了
char[] bb = b.toCharArray();
int k = 0;
for (int i = 0, j = c.length; i < j -1; i++) {
if (c[i] == bb[0] && c[i + 1] == bb[1]) {
k = i;
}
}
String.length()---->才是方法
你的indexOf实现包含在里面,自己找public class Test
{
public static void main(String []ars)
{
String str=new String("本.拉登");
String match=".拉";
String value="as";
System.out.println("原字符串: "+str+" "+"替换子串: "+match+" "+"替换值: "+value);
System.out.println("替换后值为: "+replace(str,match,value));
}
public static String replace(String str,String match,String value)
{
char[] arr_str=str.toCharArray();
char[] arr_match=match.toCharArray();
char[] arr_value=value.toCharArray();
boolean flag=false;
int len=arr_str.length-arr_match.length+arr_value.length;
char[] newCharArr=null;
int index=-1;
int count=0;
for(int i=0,k=0;i<arr_str.length&k<arr_match.length;++i,++k)
{
if((arr_str[i]==arr_match[k])&(!flag))
{
++count;
index=i;//记下下标
flag=true;
}
else if((arr_str[i]==arr_match[k])&flag)
{
++count;
} if(((arr_str[i])!=arr_match[k]))
{
count=0;
flag=false;
k=-1;
}
if(count==arr_match.length)//如果为真,则说明字符连续相等arr_match.length次,即arr_str中含有arr_match
{
newCharArr=new char[len];
break;
}
}
if(newCharArr==null)
return null;
for(int i=0;i<index;++i) //拷贝index前的串
{
newCharArr[i]=arr_str[i];
} for(int i=index,k=0;k<arr_value.length;++i,++k)//拷贝arr_value
{
newCharArr[i]=arr_value[k];
} for(int i=index+arr_value.length,k=index+arr_match.length;i<newCharArr.length;++i,++k)
{
newCharArr[i]=arr_str[k];
}
return new String(newCharArr);
}
}
{
char[] source = strSource.toCharArray();
char[] destination = strDestination.toCharArray();
char firstChar = destination[0];
int length = source.length - destination.length;
for(int i=0;i<length;)
{
if(source[i]!=firstChar)
{
i = i + 1;
}
else
{
for(int j=1;j<destination.length;j++)
{
if(source[i+j]==destination[j])
{
if(j==destination.length-1)
return i;
}
else
{
i = i + j;
break;
}
}
}
}
return -1;
}