[说明] 下面流程图的功能是:在已知字符串A中查找特定字符串B,如果存在,则输出B串首字符在A串中的位置,否则输出-1。设串A由n个字符A(0)、A(1)、…、A(n-1)组成,串B由m个字符B(0)、B(1)、…、B(m-1)组成,其中n≥m>0。

admin2012-04-11  42

问题 [说明]
   下面流程图的功能是:在已知字符串A中查找特定字符串B,如果存在,则输出B串首字符在A串中的位置,否则输出-1。设串A由n个字符A(0)、A(1)、…、A(n-1)组成,串B由m个字符B(0)、B(1)、…、B(m-1)组成,其中n≥m>0。在串A中查找串B的基本算法如下:从串A的首字符A(0)开始,取子串A(0)A(1)…i(m-1)与串B比较;若不同,则再取子串A(1)A(2)…A(m)与串B比较,以此类推。
   例如,字符串“CABBRFFD”中存在字符子串“BRF”(输出3),不存在字符子串“RFD”(输出-1)。
   在流程图中,i用于访问串A中的字符(i=0,1,…,n-1),j用于访问串B中的字符(j=0,1,…,m-1)。在比较A(i)A(i+1)…A(i+m-1)与B(0)B(1)…B(m-1)时,需要对A(i)与B(0)、A(i+1)与B(1)、…、A(i+j)与B(j)、…逐对字符进行比较。若发现不同,则需要取下一个子串进行比较,以此类推。
   [流程图]
   本题流程图如图8-30所示。

选项

答案j+1 i+1 0 i -1

解析 依题意,在已知字符串A中查找特定字符串B,基本算法如下:从串A的首字符A(0)开始,取子串A(0)A(1)…A(m-1)与串B比较;若不同,则再取子串A(1)A(2)…A(m)与串B比较,以此类推。我们可以采用两重循环来实现。初始时,i与j都设为0,i范围为0至n-1,j范围为m-1,比较A(i+j)与B(j)是否相等,在循环过程中只要存在一个j使得A(i+j)不等于B(i),则退出本次循环,i+1后重新进行遍历。如果最后i>n-m则说明不存在B字符串。否则,返回B字符串的位置。
转载请注明原文地址:https://jikaoti.com/ti/mvL7FFFM
0

相关试题推荐
最新回复(0)