បំបែកខ្សែអក្សរមួយនៅក្នុងដំណោះស្រាយខ្សែឡេឡេលេខកូដដែលមានតុល្យភាព  


កម្រិតលំបាក មានភាពងាយស្រួល
សួរញឹកញាប់ ទីភ្នាក់ងារ Bloomberg បន្ទប់ពិសោធន៍វ៉លម៉ាត
ក្បួនដោះស្រាយ ការសរសេរកូដ លោភលន់ សំភាសន៍ កិច្ចសម្ភាសន៍ LeetCode LeetCodeSolutions ខ្សែអក្សរ

សេចក្តីថ្លែងការណ៍បញ្ហា។  

នៅក្នុងបញ្ហានេះយើងត្រូវបានផ្តល់ឱ្យក ខ្សែអក្សរ នៃតួអក្សរដែលមានតែ 'R' និង 'L' ប៉ុណ្ណោះ។ យើងហៅខ្សែដែលមានតុល្យភាពប្រសិនបើវាមានលេខដូចគ្នានៃអក្សរ R និង L អិល។ យើងអាចបែងចែកខ្សែអក្សរដែលបានផ្តល់ទៅជាខ្សែអក្សរដែលមិនពេញចិត្ត។ គោលដៅគឺដើម្បីរកចំនួនអតិបរមានៃខ្សែដែលមានតុល្យភាពដែលអាចធ្វើបាន។

ចំណាំ:

  • ខ្សែអក្សរដែលបានផ្តល់ឱ្យមានតុល្យភាព។
  • ប្រវែងនៃខ្សែអក្សរស្ថិតក្នុងជួរ៖ [១, ១០០០]
  • មានតែអក្សរ“ L” និង“ R” ប៉ុណ្ណោះដែលមាននៅក្នុងការបញ្ចូល

ឧទាហរណ៍

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

ការពន្យល់:

បំបែកខ្សែអក្សរមួយនៅក្នុងដំណោះស្រាយខ្សែឡេឡេលេខកូដដែលមានតុល្យភាព

 

វិធីសាស្រ្ត (លោភលន់)  

ដូច្នេះយ៉ាងហោចណាស់យើងនឹងមានការបំបែកតុល្យភាពដែលអាចមាន ១ ឥឡូវនេះយើងត្រូវបង្កើនចំនួនបំបែកជាអតិបរមាដើម្បីទទួលបានភាគថាសអតិបរមា។ វិចារណញាណយើងអាចដោះស្រាយវាបាន លោភលន់។ យើងនឹងឆ្លងកាត់ខ្សែអក្សរហើយនៅគ្រប់ចំណុចដែលយើងបានទទួលចំនួនស្មើរនៃ L និង R យើងនឹងបង្កើនចំនួនផ្នែកដែលអាចមាន។ វិធីនេះយើងនឹងពិចារណាគ្រប់ដំណោះស្រាយសម្រាប់ខ្សែបំបែកដែលមានតុល្យភាព។

ការអនុវត្តនៃការបំបែកខ្សែអក្សរមួយនៅក្នុងដំណោះស្រាយខ្សែឡេឡេលេខកូដដែលមានតុល្យភាព

កម្មវិធី 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

ការវិភាគស្មុគស្មាញនៃការបំបែកខ្សែអក្សរមួយនៅក្នុងដំណោះស្រាយខ្សែឡេឡេកូដកូដ

ស្មុគស្មាញពេលវេលា

ឱ (ន។ ) ន = ប្រវែងនៃខ្សែអក្សរ។ ភាពស្មុគស្មាញនៃពេលវេលាគឺលីនេអ៊ែរព្រោះយើងឆ្លងកាត់ខ្សែអក្សរទាំងមូលតែម្តង។

សូម​មើល​ផង​ដែរ
ប្រសព្វនៃដំណោះស្រាយអារេអាទីលទី ២

ភាពស្មុគស្មាញនៃលំហ 

ឱ (១)ដូចដែលយើងប្រើតែទំហំចងចាំថេរប៉ុណ្ណោះ។