Sətir III LeetCode Həllində Ters Sözlər

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Amazon alma Bloomberg eBay Facebook google microsoft PayPal Paytm Snapchat Yandex
Bolt ZapposBaxılıb 42

Problem bəyanat

Sətir III LeetCode Həllində Ters Sözlər – Bizə sətir verilir və boşluq və ilkin söz sırasını qoruyub saxlamaqla cümlə daxilində hər bir sözdəki simvolların sırasını dəyişdirməyimiz xahiş olunur.

Nümunələr və izahatlar

Misal 1:

Input: s = "Let's take LeetCode contest"
Output: "s'teL ekat edoCteeL tsetnoc"
Exaplanation: Each word is reversed in the ouput while preserving whitespaces

Misal 2:
Input: s = "God Ding"
Output: "doG gniD"
Explanation: reverse of God is doG & Ding is gniD

Yanaşma

Bu problem sadə tətbiqdən istifadə etməklə istifadə edilə bilər. Bütün simvolları bir-bir təkrarlamaq üçün bir döngədən istifadə edəcəyik. Sözün simvollarını saxlamaq üçün müvəqqəti t sətirindən istifadə edək. Boşluğa çatana qədər və ya verilmiş cümlənin sonuna çatana qədər t hərfində simvol əlavə etməyə və ya geri itələməyə davam edin. t sətirindəki simvolları tərsinə çevirin və onu “res” cavab sətirinə və boş t sətirinə itələyin.

Java tətbiqində istifadə olunan yanaşma ona görə fərqlənir strings Java-da dəyişməz olduqları üçün idarə etmək bir az çətindir. Beləliklə, sətirdən istifadə etmək əvəzinə, onu simvol massivinə çevirəcəyik və cümlədə mövcud olan hər bir sözün birinci və sonuncu indeksini tapacağıq və ləğv etmək en.

* Verilmiş sətirdən keçin.

* Boşluğa qarşı çıxmayana qədər hər bir simvolu saxlayın

* Sadəlik üçün nəhayət bir boş yerə itələdim.

* Siz boşluq qarşı zaman geri üçün funksiyası simli keçir.

* Qayıdış sətirini müvəqqəti dəyişənimdə saxlayın.

* Nəticə sətirdə saxlanması.

* Sözü ayırmaq üçün nəticədə boş yerə basaraq.

* Amma son sözdə yer əlavə etmək DEYİL. Bunun üçün if((i+1) if ifadəsi var.

Kodu

Sətirdəki Əks Sözlər üçün C++ kodu III

class Solution {
public:
    string reverseWords(string s) {
        string res="", t="";
        int n = s.size();
        for(int i=0; i<=n; i++) {
            if(i == n){
                reverse(t.begin(), t.end());
                res += t;
            }
            else if(s[i] == ' ' || i==n) {
                reverse(t.begin(), t.end());
                res += t + " ";
                
                t="";
            }
            else {
                t+=s[i];
            }
        }
        return res;
    }
};

Sətirdəki Əks Sözlər üçün Java kodu III

class Solution {
    public String reverseWords(String s) {
        
        int len = s.length(); 
        if(len == 1) 
            return s;
        
        int firstIndex, lastIndex;
        char[] res = s.toCharArray(); 
        char temp;
        
        for(int index = 0 ; index < len ; index++){
            
            firstIndex = index; 
            
            while(++index < len && res[index] != ' '); 
            lastIndex = index - 1; 
            
      // reversing characters of the word
            while(firstIndex < lastIndex){
                temp = res[firstIndex];
                res[firstIndex++] = res[lastIndex];
                res[lastIndex--] = temp;
            }
        }
        
        return new String(res); 
    }
}

Sətir III LeetCode Həllində Əks Sözlər üçün Mürəkkəblik Təhlili

Translate »