លុបចោលដំណោះស្រាយផាលីនដូមីកដំណោះស្រាយឡេឡេកូដ


កម្រិតលំបាក មានភាពងាយស្រួល
សួរញឹកញាប់ ក្រុមហ៊ុន Amazon
ខ្សែអក្សរ

បញ្ហាយកផលបនា្ទាប់ Palindromic Leetcode ដំណោះស្រាយថាអ្នកត្រូវបានផ្តល់ឱ្យ ខ្សែអក្សរ។ ខ្សែអក្សរមានតែពីរតួអក្សរ 'a' ឬ 'b' ។ អ្នកត្រូវលុបបំបាត់ខ្សែអក្សរទាំងមូល។ មានការរឹតត្បិតដែលអ្នកអាចលុបតែបណ្តុំពន្លឺព្រះអាទិត្យនៅក្នុងចលនាមួយ។ រកចំនួនជំហានអប្បបរមាដែលត្រូវការដើម្បីលុបខ្សែអក្សរទាំងមូល។ ចូរយើងពិចារណាឧទាហរណ៍មួយចំនួនមុនពេលលោតចូលទៅក្នុងដំណោះស្រាយ។

លុបចោលដំណោះស្រាយផាលីនដូមីកដំណោះស្រាយឡេឡេកូដ

s = "ababa"
1

ការពន្យល់ៈដោយសារខ្សែអក្សរមានរាងដូចកញ្ចក់។ យើងអាចដកខ្សែទាំងមូលចេញក្នុងចលនាតែមួយ។ ដូច្នេះចម្លើយក៏មានផងដែរ ១ ។

s = "abb"
2

ការពន្យល់ៈនៅក្នុងចលនាដំបូងយើងដក“ ប៊ី” ។ នៅក្នុងចលនាទីពីរយើងដកចេញ“ ក” ។ ដូច្នេះយើងតម្រូវឱ្យមានការផ្លាស់ប្តូរយ៉ាងហោចណាស់ ២ ដងដើម្បីលុបខ្សែអក្សរទាំងមូល។

វិធីសាស្រ្តក្នុងការយកចេញនូវដំណោះស្រាយឡេលូនកូដ

បញ្ហាយកបណ្តាំផល្លិនមីយដំណោះស្រាយឡេឡេកូដជាដំណោះស្រាយ។ វាតម្រូវឱ្យយើងសង្កេតមើលថាខ្សែអក្សរមានតែតួអក្សរពីរ a 'និង' b '។ ប្រសិនបើយើងឆ្លងកាត់ក្រោនក្រូមឺរមួយនោះយើងត្រលប់មកវិញតែ ១ ប៉ុណ្ណោះពីព្រោះវាទាមទារការផ្លាស់ប្តូរតែមួយដើម្បីលុបបណ្តាញពន្លឺទាំងមូល។ ប្រសិនបើយើងទទួលបានខ្សែរទទេយើងគួរតែត្រឡប់ ០។ ប៉ុន្តែក្រៅពីនេះមានតែករណីតែមួយទេនៅពេលដែលយើងមានខ្សែដែលមិនមែនជាក្រដាស់ពន្លឺទាំងមូល។

ប៉ុន្តែដោយសារខ្សែអក្សរមានតែ 'a' និង 'b' ។ យើងនឹងធ្វើចលនាយ៉ាងច្រើន ២ ដងដើម្បីដកតួអក្សរទាំងអស់ចេញ។ នៅក្នុងចលនាដំបូងយើងគួរតែដកចេញនូវរបស់ទាំងអស់។ នៅជំហានទី ២ យើងដករបស់ទាំងអស់ចេញ។ ដូច្នេះចម្លើយចំពោះទំ [បញ្ហានេះអាចមានតែ ០ ១ រឺ ២ អាស្រ័យលើការបញ្ចូល។

លេខកូដដើម្បីលុបចោលនូវដំណោះស្រាយបន្ទាប់ឡេឡិចកូដ

លេខកូដ C ++

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

int removePalindromeSub(string s) {
    if(s.size() == 0)
        return 0;

    // check if palindrome
    bool isPalin = true;
    for(int i=0;i<s.length()/2;i++)
        if(s[i] != s[s.length()-1-i])
            isPalin = false;

    if(isPalin == true)
        return 1;
    else
        return 2;
}

int main(){
    cout<<removePalindromeSub("abb");
}
2

កូដចាវ៉ា

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

class Main
{
  public static int removePalindromeSub(String s) {
        if(s.isEmpty())
            return 0;
        
        // check if palindrome
        boolean isPalin = true;
        for(int i=0;i<s.length()/2;i++)
            if(s.charAt(i) != s.charAt(s.length()-1-i))
                isPalin = false;
        
        if(isPalin == true)
            return 1;
        else
            return 2;
    }
    
  public static void main (String[] args) throws java.lang.Exception
  {
    System.out.print(removePalindromeSub("abb"));
  }
}
2

ការវិភាគស្មុគស្មាញ

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

O (N), ពីព្រោះយើងត្រូវឆ្លងកាត់ខ្សែអក្សរទាំងមូលដើម្បីពិនិត្យមើលថាតើវាមានពន្លឺព្រះអាទិត្យឬអត់។

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

ឱ (១), ពីព្រោះយើងប្រើចំនួនថេរនៃអថេរ។