程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 順序串算法2

順序串算法2

編輯:C++入門知識

問題描述:從串S中第index個字符起求出首次與與字符串S1相同的子串的起始位置。     算法思路:從第index 個字符開始掃描串S,當其元素值與S1的第一個字符相等時,判定他們之後的元素值是否依次相同,直到S1結束為止。若都相同則返回,否則繼續上述過程直到S掃描完為止。

 
//算法1  
int part(SqString &S,SqString &S1,int index)  
{  
    int i=index,j=0;  
    while(i<S.length&&j<S1.length)  
    {  
        if(S.data[i]==S1.data[j])  
        {  
            i++;  
            j++;  
        }  
        else  
        {  
            i=i-j+1;  
            j=0;  
        }  
    }  
    if(j>=S1.length)  
        return (i-S1.length);  
    else  
        return -1;  
}  
  
  
//算法2  
  
int Part(SqString S,SqString S1,int index)  
{  
    int i,j,k;  
    int n=S.length;  
    int m=S1.length;  
    for(i=index;i<n-m;i++)  
    {  
        for(j=0,k=i;j<m&&S1.data[j]==S.data[k];j++,k++);  
        if(j==m)  
            return i;  
    }  
    return -1;  
}  

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved