คำถามติดแท็ก strings

คำถามเกี่ยวกับลำดับของสัญลักษณ์ชุดดังกล่าวและคุณสมบัติตลอดจนการนำไปใช้

1
ค้นหาการวนซ้ำที่ยาวที่สุด
กำหนดสตริงผมอยากจะหาที่ยาวที่สุดในการทำซ้ำ (อย่างน้อยสองครั้ง) subsequence นั่นคือผมอยากจะพบสตริงซึ่งเป็น subsequence (ที่ไม่จำเป็นต้องเป็นที่ต่อเนื่องกัน) ของเช่นว่าw' นั่นคือคือสตริงที่แบ่งครึ่งปรากฏเป็นสองเท่าในแถว โปรดทราบว่าคือองค์ประกอบของแต่ไม่จำเป็นต้องเป็นสตริงย่อยssswwwsssw=w′⋅w′w=w′⋅w′w=w' \cdot w' wwwwwwsss ตัวอย่าง: สำหรับ 'ababccabdc' มันจะเป็น 'abcabc' เพราะ 'abc' = 'abc' และ 'abc' จะปรากฏขึ้น (อย่างน้อย) สองครั้งใน 'ababccabdc' สำหรับ 'addbacddabcd' ตัวเลือกหนึ่งคือ 'dddd' เพราะ 'dd' ปรากฏขึ้นสองครั้ง (ฉันไม่สามารถใช้ตัวอักษรเดียวกันหลาย ๆ ครั้งได้ แต่ที่นี่ฉันมี 4 'd ดังนั้นมันก็โอเค) แต่มันก็ดีกว่า 4 ความยาว 8: 'abcdabcd' เนื่องจาก 'abcd' เป็นซับสตริงของ 'addbacddabcd' …

1
รับสาย n เป็นหนึ่งในนั้นสตริงย่อยของอื่นหรือไม่
สมมติว่าเราจะได้รับคอลเลกชันของสตริงs_1ฉันต้องการทราบว่าสตริงเหล่านี้เป็นสตริงย่อยของสตริงอื่น ๆ ในคอลเลกชันหรือไม่ กล่าวอีกนัยหนึ่งฉันต้องการอัลกอริทึมสำหรับงานต่อไปนี้:nnnS1,…,SnS1,…,SnS_1,\dots,S_n อินพุต:S1,…,SnS1,…,SnS_1,\dots,S_n เอาท์พุท:ดังกล่าวว่าเป็นย่อยของและหรือไม่หากไม่เช่นที่มีอยู่i,ji,ji,jSiSiS_iSjSjS_ji≠ji≠ji\ne ji,ji,ji,j มีอัลกอริทึมที่มีประสิทธิภาพสำหรับสิ่งนี้หรือไม่? หากเราแทนที่ "substring" ด้วย "คำนำหน้า" จะมีอัลกอริทึมที่มีประสิทธิภาพ (เรียงลำดับสตริงจากนั้นทำการสแกนเชิงเส้นเพื่อเปรียบเทียบสตริงที่อยู่ติดกันการเรียงลำดับจะทำให้แน่ใจว่ามีสตริงย่อยติดกัน) แต่ดูเหมือนจะมีความท้าทายมากขึ้นในการทดสอบว่าสตริงใด ๆ เป็นสตริงย่อยของสตริงอื่น ๆ อัลกอริทึมที่ไร้เดียงสาคือการทำซ้ำในทุกคู่ของแต่ต้องใช้การทดสอบสตริงย่อยมีอัลกอริทึมที่มีประสิทธิภาพมากขึ้นหรือไม่?i,ji,ji,jΘ(n2)Θ(n2)\Theta(n^2) ฉันเดาว่าเราเรียกสิ่งนี้ว่า "การทดสอบสตริงย่อยทุกคู่" หรืออะไรทำนองนั้น เป้าหมายสูงสุดของฉันคือการตัดคอลเลคชั่นดังนั้นจึงไม่มีสตริงย่อยใด ๆ โดยลบแต่ละอันที่เป็นซับสตริงของอย่างอื่นในคอลเลกชัน

1
ค้นหารูปแบบการทำซ้ำที่ยาวที่สุดในสตริง
ฉันกำลังมองหาอัลกอริทึมที่มีประสิทธิภาพเพื่อค้นหารูปแบบการทำซ้ำที่ยาวที่สุดในสตริง ตัวอย่างเช่นพิจารณาสตริงตัวเลขต่อไปนี้: 5431428571428571428571428571427623874534. อย่างที่คุณเห็น142857142857คือรูปแบบที่ยาวที่สุดซึ่งซ้ำกันสองสามครั้ง (อย่างน้อยสองครั้ง) ในสตริงนี้ สตริงที่ซ้ำกันไม่ควรมีความคิดใด ๆ มากกว่ากำลังดุร้าย?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.