順序結構儲存串實現串萬用字元匹配的演算法
問題及程式碼:
/*
* Copyright (c) 2016, 煙臺大學計算機與控制工程學院
* All rights reserved.
* 檔名稱:pattern.cpp
* 作 者:單昕昕
* 完成日期:2016年4月7日
* 版 本 號:v1.0
* 問題描述:採用順序結構儲存串,
編寫一個實現串萬用字元匹配的演算法pattern_index(),
其中的萬用字元只有'?',它可以和任一字元匹配成功,
例如,pattern_index("?re","there are")返回的結果是2。
* 程式輸入:兩個字串。
* 程式輸出:配對成功的母串位置。
*/
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int MaxSize=100;
typedef struct
{
char data[MaxSize];
int length;
} SqString;
SqString str;
void StrAssign(SqString &s,char cstr[])
{
int i;
for(i=0; cstr[i]!='\0'; ++i)
s.data[i]=cstr[i];
s.length=i;
}
int pattern_index(char cstr[],SqString &s)
{
int i,sl,cl;
for (i=0; i<s.length; ++i)
{
sl=i;
cl=0;
while(sl<s.length&&cl<strlen(cstr)&&(s.data[sl]==cstr[cl]||cstr[cl]=='?'))
{
sl++;
cl++;
}
if (cl>=strlen(cstr))
return(i);
}
return (-1);
}
int main()
{
char c1[100],c2[100];
gets(c1);
gets(c2);
StrAssign(str,c1);
cout<<pattern_index(c2,str)<<endl;
}
執行結果:
相關文章
- 11 線性表的順序儲存結構
- 線性表之順序儲存結構
- 【資料結構】二叉樹(順序儲存、鏈式儲存)的JAVA程式碼實現資料結構二叉樹Java
- 資料結構與演算法 - 串資料結構演算法
- 二叉樹的儲存(輸入一串字元)與遍歷二叉樹字元
- C#資料結構-二叉樹-順序儲存結構C#資料結構二叉樹
- JavaScript資料結構與演算法(串)JavaScript資料結構演算法
- 資料結構---串資料結構
- 子串匹配 BF法
- 線性結構(順序儲存和鏈式儲存)和非線性結構的特點及區別
- @資料結構C/C++版(5)《棧的順序儲存結構以及進棧和出棧操作的實現》資料結構C++
- 萬用字元——*可以當空串或任意串(一)字元
- 【資料結構】串(String、StringBuilder、StringBuffer)的JAVA程式碼實現資料結構UIJava
- 【大話資料結構C語言】22 串的快速模式匹配演算法(KMP演算法)資料結構C語言模式演算法KMP
- 線性表的順序儲存C++程式碼實現C++
- 演算法-無重複字元的最長子串演算法字元
- 佇列-順序儲存佇列
- 棧1: 順序儲存
- 第2章 順序表及其順序儲存
- mysql 的Escape跳脫字元串MySql字元
- 順序結構
- 【演算法框架套路】滑動視窗演算法:匹配子串演算法框架
- 無重複字元的最長子串字元
- 資料結構實驗一:順序表的建立與操作實現、順序表實現約瑟夫環問題資料結構
- AC 自動機——多模式串匹配模式
- 佇列的鏈式儲存結構的實現佇列
- 3 無重複字元的最長子串字元
- LeetCode——無重複字元的最長子串LeetCode字元
- java無重複字元的最長子串Java字元
- 資料結構篇_程式設計思想板塊_第四章串的模式匹配資料結構程式設計模式
- 第3章 順序表的鏈式儲存
- 【資料結構&演算法】10-串基礎&KMP演算法原始碼資料結構演算法KMP原始碼
- 順序結構與選擇結構
- 順序表的實現
- 資料結構c語言實現順序表基本操作資料結構C語言
- Prometheus時序資料庫-磁碟中的儲存結構Prometheus資料庫
- 基礎資料結構(一)---(最全)定長順序表的實現資料結構
- python實現基本資料結構第二篇(順序棧、鏈棧,順序隊、鏈隊)Python資料結構
- leetcode 之無重複字元的最長子串LeetCode字元