{"id":270,"date":"2011-09-17T13:20:00","date_gmt":"2011-09-17T05:20:00","guid":{"rendered":"http:\/\/wangkaixuan.tech\/?p=270"},"modified":"2020-06-06T13:21:47","modified_gmt":"2020-06-06T05:21:47","slug":"%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84_%e4%b8%b2_%e4%b8%b2%e7%9a%84%e6%a8%a1%e5%bc%8f%e5%8c%b9%e9%85%8d_kmp%e7%ae%97%e6%b3%95_c%e5%ae%9e%e7%8e%b0","status":"publish","type":"post","link":"http:\/\/www.wangkaixuan.tech\/?p=270","title":{"rendered":"\u6570\u636e\u7ed3\u6784_\u4e32_\u4e32\u7684\u6a21\u5f0f\u5339\u914d_KMP\u7b97\u6cd5_C++\u5b9e\u73b0"},"content":{"rendered":"\n<p>head.h<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include&lt;iostream>\n#include&lt;string>\nusing namespace std;\n\nclass STRING\n{\npublic:\n\tvoid GetString();\n\tvoid GetSubString();\n\tvoid KMP();\n\tvoid Print();\nprivate:\n\tvoid GetNext();\n\tstring str;\n\tstring sub;\n\tint next&#91;1000];\n\tint strlen;\n\tint sublen;\n};\n\nvoid STRING::GetString()\n{\n\tcout &lt;&lt; \"Please Input The MainString :\" &lt;&lt; endl &lt;&lt; endl;\n\tcin >> str;\n\tstrlen = str.length();\n}\n\nvoid STRING::GetSubString()\n{\n\tcout &lt;&lt; \"Please Input The SubString :\" &lt;&lt; endl &lt;&lt; endl;\n\tcin >> sub;\n\tsublen = sub.length();\n}\n\nvoid STRING::KMP()\n{\n\tcout &lt;&lt; \"KMP Method Called !\" &lt;&lt; endl &lt;&lt; endl;\n\tGetNext();\n\tint i, j;\n\ti = j = 0;\n\twhile (i &lt; strlen &amp;&amp; j &lt; sublen)\n\t{\n\t\tif (j == -1 || str&#91;i] == sub&#91;j])\n\t\t{\n\t\t\ti++;\n\t\t\tj++;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tj = next&#91;j];\n\t\t}\n\t}\n\tif (j == sublen)\n\t{\n\t\tcout &lt;&lt; \"Succeed ! Position = \" &lt;&lt; i - j + 1 &lt;&lt; endl &lt;&lt; endl;\n\t}\n\telse\n\t{\n\t\tcout &lt;&lt; \"Failed !\" &lt;&lt; endl &lt;&lt; endl;\n\t}\n}\n\nvoid STRING::Print()\n{\n\tcout &lt;&lt; \"Main String = \" &lt;&lt; str &lt;&lt; endl &lt;&lt; \"    Length = \" &lt;&lt; strlen\n\t\t\t&lt;&lt; endl;\n\tcout &lt;&lt; \"SubString = \" &lt;&lt; sub &lt;&lt; endl &lt;&lt; \"    Length = \" &lt;&lt; sublen &lt;&lt; endl\n\t\t\t&lt;&lt; endl;\n}\n\nvoid STRING::GetNext()\n{\n\tint i, j;\n\tnext&#91;0] = -1;\n\ti = 0;\n\tj = -1;\n\twhile (i &lt; sublen - 1)\n\t{\n\t\tif (j == -1 || sub&#91;i] == sub&#91;j])\n\t\t{\n\t\t\ti++;\n\t\t\tj++;\n\t\t\tif (sub&#91;i] != sub&#91;j])\n\t\t\t\tnext&#91;i] = j;\n\t\t\telse\n\t\t\t\tnext&#91;i] = next&#91;j];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tj = next&#91;j];\n\n\t\t}\n\t}\n}\n<\/code><\/pre>\n\n\n\n<p>main.cpp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include&lt;iostream>\n#include\"head.h\"\nusing namespace std;\n\nint main()\n{\n\tSTRING str;\n\tchar choice;\n\twhile (1)\n\t{\n\t\tcout &lt;&lt; \"Your Choice Please ?\" &lt;&lt; endl &lt;&lt; endl &lt;&lt; \"1 . Set Main String\"\n\t\t\t\t&lt;&lt; endl &lt;&lt; \"2 . Set SubString\" &lt;&lt; endl &lt;&lt; \"3 . KMP\" &lt;&lt; endl\n\t\t\t\t&lt;&lt; \"4 . Print\" &lt;&lt; endl &lt;&lt; \"5 . Quit\" &lt;&lt; endl &lt;&lt; endl;\n\t\tcin >> choice;\n\t\tswitch (choice)\n\t\t{\n\t\tcase '1':\n\t\t\tstr.GetString();\n\t\t\tbreak;\n\t\tcase '2':\n\t\t\tstr.GetSubString();\n\t\t\tbreak;\n\t\tcase '3':\n\t\t\tstr.KMP();\n\t\t\tbreak;\n\t\tcase '4':\n\t\t\tstr.Print();\n\t\t\tbreak;\n\t\tcase '5':\n\t\t\treturn 0;\n\t\tdefault:\n\t\t\tcout &lt;&lt; \"No Such Choice !\" &lt;&lt; endl;\n\t\t\tbreak;\n\t\t}\n\t}\n}\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>head.h main.cpp<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-270","post","type-post","status-publish","format-standard","hentry","category-06-02-"],"_links":{"self":[{"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=\/wp\/v2\/posts\/270","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=270"}],"version-history":[{"count":0,"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=\/wp\/v2\/posts\/270\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=270"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}