2014美团笔试之寻找最短子串

实现代码



程序分析

   ①使用完全遍历。遍历起点i,在i=[0 Text.size()-Key.size())遍历
   ②对于每个起点,对应相同的字符串temp=Key。
   ③从某个起点开始遍历后序字符,倘若字符在temp中出现,将该字符从temp中删除。
   ④倘若temp为空,即某个起点到当前位置j的子字符串已经能够匹配所有的字符。循环终止。将当前字符长度与最短子字符串长度Short比较,取最小值并记录位置。
   ⑤若最短子字符串长度为key的长度,没必要移动匹配起点,循环终止
   ⑥初始化Short最短长度为text.size()+1.若结果未变,代表没有找到存在的子串。

要点注意

   ①string迭代器的使用。见Search函数

   ②成员函数basic_string::erasa

 iterator erase(iterator first, iterator last)//删除[first last)范围内的元素,返回被删除的元素的前面的一个元素的迭代器类型or end() if no such element exists
 iterator erase(iterator it);//删除字符串中所有的 *it,返回被删除的元素的前面的一个元素的迭代器类型or end() if no such element exists
 basic_string& erase(size_type p0 = 0, size_type n = npos);//删除[0 n]的元素,并返回 当前string的引用.

   ③vector也有相同的使用。不过迭代器要声明类型:vector<int>::iterator it 

   ④string的输入可以用空格和换行表示读入结束。可以直接用cin,cout输入输出

相关文章:

  • 2022-12-23
  • 2021-11-17
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-13
猜你喜欢
  • 2021-09-01
  • 2022-12-23
  • 2021-07-01
  • 2021-12-08
  • 2022-12-23
  • 2021-07-01
  • 2021-12-11
相关资源
相似解决方案