በተመጣጣኝ ክሮች Leetcode መፍትሄ ውስጥ አንድ ክር ይክፈሉ


የችግር ደረጃ ቀላል
ውስጥ በተደጋጋሚ ተጠየቀ ብሉምበርግ የዎልማርት ላብራቶሪዎች
ስስታም ሕብረቁምፊ

የችግሩ መግለጫ

በዚህ ችግር ውስጥ እኛ ሀ ተሰጥቶናል ክር የቁምፊዎች ፣ ‹አር› እና ‹ኤል› ብቻ የያዙ ፡፡ ተመሳሳይ የ ‹አር እና› ኤል ቁጥር ካለው ሚዛናዊ የሆነ ገመድ እንጠራዋለን ፡፡ የተሰጠውን ገመድ ወደ ተከፋፈሉ ንጣፎች ልንከፍለው እንችላለን ፡፡ ግቡ የተመጣጠነ የተከፋፈሉ ሕብረቁምፊዎች የሚቻለውን ከፍተኛ ቁጥር ማግኘት ነው።

ማስታወሻ:

  • የተሰጠው ገመድ ሚዛናዊ ነው ፡፡
  • የሕብረቁምፊው ርዝመት በክልሉ ውስጥ ይገኛል [1, 1000]
  • በግብአት ውስጥ የሚገኙት ‘L’ እና ‘R’ ብቻ ናቸው

ለምሳሌ

s = "RLRRLLRLRL"
4
s = "RLLLLRRRLR"
3

ማብራሪያ:

በተመጣጣኝ ክሮች Leetcode መፍትሄ ውስጥ አንድ ክር ይክፈሉ

 

አቀራረብ (ስግብግብ)

ስለዚህ ፣ ቢያንስ 1 ተመጣጣኝ ሚዛናዊ ክፍፍል ይኖረናል። አሁን ከፍተኛውን የክፍልፋዮች ቁጥር ለማግኘት ይህንን የተከፋፈሉትን ቁጥር ከፍ ማድረግ አለብን ፡፡ በአስተዋይነት ፣ ልንፈታው እንችላለን በስግብግብነት. እኛ ሕብረቁምፊውን እናቋርጣለን ፣ እና እኩል የ ‹ኤል› እና ‹አር› በተቀበልንበት ቦታ ሁሉ ሊሆኑ የሚችሉ ክፍሎችን ቁጥር እንጨምራለን ፡፡ በዚህ መንገድ ፣ ለተመጣጣኝ ስፕሊት ገመድ እያንዳንዱን መፍትሔ እንመለከታለን ፡፡

በተመጣጣኝ ክሮች Leetcode መፍትሄ ውስጥ የተሰነጠቀ ገመድ መዘርጋት

C ++ ፕሮግራም

#include <bits/stdc++.h>

using namespace std;

int balancedStringSplit(string s) {
    int balance = 0 , splits = 0;
    for(char &c : s) {
        balance += (c == 'L' ? -1 : 1);
        if(balance == 0)
            splits++;
    }
    return splits;
}

int main() {
    string s = "RLRRLLRLRL";
    cout << balancedStringSplit(s) << endl;
    return 0;
}

የጃቫ ፕሮግራም

import java.util.*;
import java.io.*;

class balanced_splits {
    public static int balancedStringSplit(String s) {
        int balance = 0 , splits = 0;
        for(int i = 0 ; i < s.length() ; i++) {
            char c = s.charAt(i);
            balance += (c == 'L' ? -1 : 1);
            if(balance == 0)
                splits++;
        }
        return splits;
    }

    public static void main(String args[]) {
        String s = "RLRRLLRLRL";
        System.out.println(balancedStringSplit(s));
    }
}
4

በተመጣጣኝ ክሮች Leetcode መፍትሄ ውስጥ አንድ ክር የተሰነጠቀ ውስብስብነት ትንተና

የጊዜ ውስብስብነት

ኦ (ኤን) ፣ ኤን = የሕብረቁምፊው ርዝመት። ሙሉውን ገመድ አንዴ ስለምንጓዝ የጊዜ ውስብስብነቱ መስመራዊ ነው።

የቦታ ውስብስብነት 

ኦ (1)፣ እኛ የምንጠቀምበት የማያቋርጥ የማስታወሻ ቦታ ብቻ ስለሆነ።