Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หาคำที่มีความยาวมากที่สุดและเป็นเลขคู่ใน String ใน C++

ในปัญหานี้ เราได้รับ string งานคือหา คำ (word) แรกที่มีความยาวมากที่สุดและเป็นเลขคู่

ตัวอย่าง

Input: "learn programming at TutorialsPoint" Output: TutorialsPoint

TutorialsPoint = 14 ตัวอักษร (คู่) และยาวที่สุด

วิธีการแก้ปัญหา: Single Pass O(N)

  1. Traverse string ตัวอักษรทีละตัว
  2. นับความยาวคำปัจจุบัน (currLen)
  3. เวลาเจอ space: ถ้า currLen เป็นเลขคู่และ > maxLen → อัปเดต maxLen และ start index
  4. Reset currLen = 0
  5. เช็คคำสุดท้ายหลังจบ loop

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

string findMaxEvenLenWord(string str) {
    int maxLen = 0, currLen = 0, startIdx = -1;
    int n = str.length();
    
    for (int i = 0; i <= n; i++) {
        if (i == n || str[i] == ' ') {
            if (currLen % 2 == 0 && currLen > maxLen) {
                maxLen = currLen;
                startIdx = i - currLen;
            }
            currLen = 0;
        } else currLen++;
    }
    
    return (startIdx == -1) ? "Not Found!" : str.substr(startIdx, maxLen);
}

int main() {
    cout << findMaxEvenLenWord("Learn programming at Tutorialspoint");
    // Tutorialspoint
    return 0;
}

ผลลัพธ์

Tutorialspoint