សាប់សូលុយស្យុងឡេឡេលេខកូដ


កម្រិតលំបាក មានភាពងាយស្រួល
សួរញឹកញាប់ Facebook
តម្រៀប

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

នៅក្នុងបញ្ហា“ សាប់ខ្សែអក្សរ” យើងត្រូវបានផ្តល់ឱ្យ ខ្សែអក្សរ និងអារេមួយ។ អារេមានសូចនាករថ្មីនៃតួអក្សរនៃខ្សែអក្សរ។ ដូច្នេះអារេ [i] តំណាងឱ្យទីតាំងថ្មីនៃតួអក្សរនៅទីតាំង ith នៃខ្សែអក្សរ។

នៅក្នុង“ សាប់ខ្សែអក្សរ” យើងត្រូវច្របាច់តួអក្សរនៃខ្សែនេះតាមរបៀបមួយដែលតួអក្សរនៃខ្សែអក្សរត្រូវបានផ្លាស់ប្តូរទៅទីតាំងចង្អុលបង្ហាញហើយប្រគល់ខ្សែសាប់ថ្មី។

ឧទាហរណ៍

s = "art", indices = [1,0,2]
rat

ការពន្យល់:

ទីតាំងថ្មីនៃតួអក្សរមានដូចខាងក្រោមៈ

a-> ១

r-> ០

t-> ២

ដូច្នេះបន្ទាប់ពីសាប់តួអក្សរដែលច្របាច់ខ្សែគឺកណ្តុរ។

វិធីសាស្រ្តសម្រាប់ដំណោះស្រាយសាប់ខ្សែអក្សរឡេឡេលេខកូដ

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

ដំណោះស្រាយ leetcode ចំពោះសាប់ខ្សែអក្សរ

ដូចដែលវាត្រូវបានបង្ហាញនៅក្នុងរូបភាព“ a” ត្រូវបានផ្លាស់ប្តូរទៅលិបិក្រមលេខ ១“ R” ត្រូវបានផ្លាស់ប្តូរទៅលេខសន្ទស្សន៍ ០ ហើយ“ t” ត្រូវបានប្តូរទៅលេខសន្ទស្សន៍ ២ ។ ដូច្នេះខ្សែចុងក្រោយបន្ទាប់ពីអនុវត្តប្រតិបត្តិការដកវាក្លាយជា“ កណ្តុរ” ។ ” ។

ដូច្នេះយើងនឹងប្រើអថេរខ្សែអក្សរថ្មីដើម្បីរក្សាទុកលទ្ធផលហើយចាប់ផ្តើមវាជាមួយខ្សែអក្សរដើម។ តោះហៅវា លទ្ធផល ខ្សែអក្សរ។ ឥឡូវយើងនឹងឆ្លងកាត់អារេចង្អុលបង្ហាញហើយនឹងកំណត់តួអក្សរនៅទីតាំងដែលមានលទ្ធផល [សូចនាករ] ។

នៅចុងបញ្ចប់ខ្សែលទ្ធផលនឹងមានខ្សែសាប់ថ្មី។

ការអនុវត្តន៍

កូដ C ++ សម្រាប់សាប់ខ្សែអក្សរ

#include <bits/stdc++.h> 
using namespace std; 
     string restoreString(string s, vector<int>& indices) {
        string res = s;
        for(int i =0; i < indices.size(); ++i)
            res[indices[i]] = s[i];
        return res;
    }
int main() 
{ 
 string s="art";      
 vector<int> arr = { 1,0,2 }; 
 cout<<restoreString(s,arr)<<endl; 
 return 0;
}
rat

កូដចាវ៉ាសម្រាប់សាប់ខ្សែអក្សរ

import java.util.Arrays; 
public class Tutorialcup {
    public static  String restoreString(String s, int[] indices) {
        StringBuilder res = new StringBuilder(s);
        for(int i =0; i < indices.length; ++i)
             res.setCharAt(indices[i],s.charAt(i));
        return res.toString();
    }
  public static void main(String[] args) {
    String s="art";  
    int [] arr = {1,0,2}; 
    String ans=  restoreString(s,arr);
    System.out.println(ans);
  }
}
rat

ការវិភាគភាពស្មុគស្មាញនៃដំណោះស្រាយសាប់ឡេឡេសកូដ

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

ពេលវេលាស្មុគស្មាញនៃលេខកូដខាងលើគឺ អូរ (n) ព្រោះយើងកំពុងតាមដានសន្ទស្សន៍តែម្តង។ នៅទីនេះ n តំណាងឱ្យចំនួនតួអក្សរនៅក្នុងខ្សែអក្សរ។

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

ភាពស្មុគស្មាញចន្លោះនៃលេខកូដខាងលើគឺ ឱ (១) ពីព្រោះយើងកំពុងប្រើតែអថេរដើម្បីរក្សាទុកចម្លើយ។

ឯកសារយោង