提问者:小点点

如何知道一个小向量(字符)是否包含在一个大向量(字符)中


给定两个char类型的大向量和小向量,我们想通过以下方式检查第一个向量是否包含第二个:所有的小字符必须以相同的顺序出现大的,尽管它们不一定是连续的。例如,大向量={'d','e',​​'s','t','i','n','o'}弱地包含小向量={'s','i'},但不包含小向量={'i','s'}。构建一个程序,从键盘读取大矢量字符,当输入#字符时停止输入。输入小矢量字符时,请执行同样的操作。程序将指示大向量是否包含小向量。

null

null

null

#include <iostream>
using namespace std;

int main(){

   const char stop = '#';
   const int maxNumber = 200;
   char big[maxNumber],
        small[maxNumber];
   char car;
   int usefulBig, usefulSmall;
   int used;
   bool found;
   
   
   cout << "Búsqueda -débil- de un vector de carteres dentro de otro\n"
        << "Introduzca los cartereses del vector grande, con terminador "
        << stop << "\n"
        << "A continuación introduzca  los caracterees del vector pequeño,"
        << " usando el mismo terminador.\n\n";

   // Lectura

   car = cin.get();
   used = 0;

   while (car != stop && used < maxNumber){
      big[used] = car;
      car = cin.get();
      used++;
   }

}


共1个答案

匿名用户

有不同的方法来解决这个问题(在CS中总是这样)。

  • 从大字符中删除所有不显示在小字符中的字符
  • 检查大小是否存在

  • 搜索大字符以查找第一个小字符
  • 然后从那里按小顺序搜索以下字符。