用java实现的strstr函数的一些问题

用java实现过程如下:

 1 public static int strstr(char[] cArray1,char[] cArray2){
 2     if(cArray1!=null && cArray2!=null
 3             && !cArray1.equals("") && !cArray2.equals("")
 4             && cArray1.length>=cArray2.length){
 5         int m=0;
 6         for(int i=0;i<=cArray1.length-cArray2.length;i++){
 7             if(cArray1[i]==cArray2[m]){
 8                 m++;
 9                 if(m==cArray2.length){
10                     return i-cArray2.length+1;
11                 }
12                 continue;
13             }else{
14                 m=0;
15             }
16         }
17     }
18     return -1;
19 }

这是同学面试c出的一道考题,要求用c实现的。

java实现的问题:

不允许使用length属性。作为库函数的开发,这里不允许使用这些属性。

====

c语言可以依靠指针来操作。

c中字符串以‘\0‘结尾,移动指针查看所指内容。

若cArray2先为空,或cArray2和cArray1同时为空,则判断包含;若cArray1先为空,则不包含。

=====

想用java实现类似c指针的功能,想到:

1、以捕获越界异常的方式来作为数组结束判断。。。

2、添加一个符号比如‘#’到末尾,作为结束标志。但如果数组中本身含有怎么办。。貌似无解。。

=========================================

除过以上这些,java实现的思想如下:

1、遍历cArray1;

2、设置变量m记录cArray2的比较位置。

初始值为0,然后顺位比较,一旦有不相等的情况,m重置为0。cArray1接着向后遍历,但cArray2从头开始。

3、判断成功的条件。m==cArray2.length。

-------

另,char类型的值比较是否相等,直接用“==”,因为是基础变量。。。。。。。。

时间: 2024-10-11 05:35:20

用java实现的strstr函数的一些问题的相关文章

【LeetCode-面试算法经典-Java实现】【028-Implement strStr() (实现strStr()函数)】

[028-Implement strStr() (实现strStr()函数)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. 题目大意 实现实现strStr()函数,判断一个字符串在另一个字符串中出现的位置.如果不匹配

java中string.trim()函数的使用

java中string.trim()函数的的作用是去掉字符串开头和结尾的空格,防止不必要的空格导致的错误. public static void main(String arg[]){ String a=" abc"; String b="abc"; System.out.println(b.equals(a)); //不会相同,因为a中有空格 a=a.trim();//去掉字符串中的空格 System.out.println(a.equals(b)); } 控制台

学C第11天(strstr函数实现)

1.strstr函数说明 strstr() 函数搜索一个字符串在另一个字符串中的第一次出现.找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址:如果未找到所搜索的字符串,则返回NULL 2.strstr函数运用 #include <stdio.h> #include<stdlib.h> #include<string.h> void main() { char str1[9] = "tasklist"; char str2[5]="l

C strstr() 函数

包含文件:string.h 函数名: strstr 函数原型:extern char *strstr(const char *str1, const char *str2); 语法:* strstr(str1,str2) str1: 被查找目标 string expression to search. str2: 要查找对象 The string expression to find. 返回值:该函数返回str2第一次在str1中的位置,如果没有找到,返回NULL The strstr() fu

模拟实现strstr函数

写一个函数,模拟strstr()函数,strstr()函数主要将主串中子串,以及以后的字符全部返回. 比如:在abbcdeef中查找bcde,返回bcdeef 思想: 1.遍历整个长串,然后找到与短串相同的位置,并且记录这个位置 2.与短串依次比较,若在后面某个位置不相同了,这时候,将刚记录的长串的位置后移一位继续比较:若一直都相同,则返回刚才记录的位置 3.如果长串遍历都没找到,则返回NULL #include<stdio.h> #include<stdlib.h> #inclu

Java 语法 索引 ----- 主函数 (Main)

public class MyApp { public static void main(String[] args) { System.out.print("Hello World"); } } Java 语法 索引 ----- 主函数 (Main),布布扣,bubuko.com

Java中的split函数的用法

Java中的 split  函数是用于按指定字符(串)或正则去分割某个字符串,结果以字符串数组形式返回: 例如: String str="[email protected]"; String[] a = str.split("@"); System.out.println("处理结果: "+a[0]+","+a[1]);   //输出的是: 处理结果: 1234,abc 对于分割的字符(串),通常是常见,普通的,没什么问题:

Wikioi 1204寻找子串位置(strstr()函数)

1204 寻找子串位置 题目描述 Description 给出字符串a和字符串b,保证b是a的一个子串,请你输出b在a中第一次出现的位置. 输入描述 Input Description 仅一行包含两个字符串a和b 输出描述 Output Description 仅一行一个整数 样例输入 Sample Input abcd bc 样例输出 Sample Output 2 数据范围及提示 Data Size & Hint 字符串的长度均不超过100 Pascal用户请注意:两个字符串之间可能包含多个

strstr()函数的使用

strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串.如果是,则该函数返回str2在str1中首次出现的地址:否则,返回NULL. 实例: 1 /** 2 *Description:strstr()函数的使用 3 *author:CodingMengmeng 4 *time:2017-08-18 20:32:22 5 */ 6 #include <iostream> 7 using namespace std; 8 9 int main() 10 { 11 cha