zoukankan      html  css  js  c++  java
  • 用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中字符串以''结尾,移动指针查看所指内容。

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

    =====

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

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

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

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

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

    1、遍历cArray1;

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

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

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

    -------

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

  • 相关阅读:
    database design
    django bulk create user
    mysql basic
    install mysql
    django apache httpd windows
    django apache httpd centos
    python mail smtplib
    compile c cpp with cl.exe in vim
    Remote Access to IPython Notebooks via SSH
    calculate traffic by snmpwalk for mrtg
  • 原文地址:https://www.cnblogs.com/bj20170624/p/7231733.html
Copyright © 2011-2022 走看看