შეცვალეთ სიმებიანი Leetcode Solution


Რთული ტური Easy
ხშირად ეკითხებიან Facebook
დახარისხება

პრობლემის განცხადება

პრობლემში ”Shuffle String” მოცემულია ა სიმებიანი და მასივი. მასივი შეიცავს სიმების ხასიათის ახალ ინდექსებს. ასე რომ, მასივი [i] წარმოადგენს სიმბოლოს სიმბოლოს ორის პოზიციას.

"Shuffle String" - ში ჩვენ უნდა გადავრიცხოთ სიმების სიმბოლოები ისე, რომ სიმების ith ხასიათი გადავიდეს ინდექსებში [i] პოზიცია და დააბრუნოს ახალი აირია სტრიქონი.

მაგალითი

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

განმარტება:

პერსონაჟების ახალი პოზიცია ასეთია:

ა-> 1

r-> 0

t-> 2

სიმბოლოების გადაადგილების შემდეგ სიმებიანი არეალი არის ვირთხა.

მიდგომა Shuffle სიმების Leetcode Solution- ისთვის

”Shuffle String” პრობლემა ძირითადად არის იმპლემენტაციის პრობლემა, სადაც საჭიროა უფრო მეტი ყურადღება გავამახვილოთ განხორციელების ნაწილზე. აქ ჩვენ უნდა მივუთითოთ სიმბოლო, რომელიც იმყოფება მე –XNUMX პოზიციაზე [i] პოზიციებს. ეს უფრო ნათელი იქნება ქვემოთ მოცემული სურათიდან.

Shiftle String- ის leetcode გამოსავალი

როგორც ეს ნაჩვენებია სურათზე "a" გადადის ინდექსში 1, "r" გადადის ინდექსში 0, ხოლო "t" გადადის ინდექსში 2. ამიტომ საბოლოო სტრიქონი shuffle ოპერაციის შესრულების შემდეგ ხდება "rat ”

ასე რომ, ჩვენ გამოვიყენებთ სტრიქონის ახალ ცვლადს შედეგის შესანახად და თავდაპირველი სტრიქონის ინიციალიზებით. მოდით დავარქვათ შედეგად სიმებიანი. ახლა ჩვენ გადავკვეთთ ინდექსების მასივს და მივანიჭებთ სიმბოლოს ith პოზიციაზე შედეგისთვის [ინდექსები [i]].

დასასრულს, შედეგების სტრიქონი შეიცავს ახალ შერეულ სტრიქონს.

განხორციელება

C ++ კოდი Shuffle String- ისთვის

#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

Shuffle String- ის ჯავის კოდი

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

Shuffle სიმების Leetcode ამოხსნის სირთულის ანალიზი

დროის სირთულე

ზემოთ მოცემული კოდის სირთულეა O (n) რადგან ჩვენ მხოლოდ ერთხელ გავდივართ ინდექსებს. აქ n წარმოადგენს სიმების სიმბოლოების რაოდენობას.

კოსმოსური სირთულის

ზემოთ მოცემული კოდის სივრცის სირთულეა O (1) რადგან პასუხის შესანახად ვიყენებთ მხოლოდ ცვლადს.

ლიტერატურა