შეცვალეთ ცალკეული სიტყვები


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

სარჩევი

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

პრობლემა "ცალკეული სიტყვების გადახედვა" აცხადებს, რომ თქვენ გეძლევათ ა სიმებიანი ს ახლა, სტრიქონში დაბეჭდეთ ყველა ცალკეული სიტყვის საპირისპირო ნაწილი.

შეცვალეთ ცალკეული სიტყვები

მაგალითი

s = "TutorialCup - changing the way of learning"
puClairotuT - gnignahc eht yaw fo gninrael
 s = "Reverse individual words"
esreveR laudividni sdrow

სტეკის გამოყენება

ალგორითმი

  1. სიგრძის სტრიქონის ინიცირება n.
  2. შექმნა დასტის მონაცემთა სტრუქტურა. სტრიქონის გადაკვეთა და შეამოწმეთ სიმების ამჟამინდელი სიმბოლო არ არის თეთრი სივრცე. შემდეგ დააჭირეთ მიმდინარე სიმბოლოს დასტაში.
  3. სხვა, სანამ სტეკის ზომა არ არის 0, დაბეჭდე ელემენტის დასტის ზედა ნაწილში და შემდეგ ამოიღე / ამოიღე იგი დასტისგან.
  4. ახლა, სტრიქონის ბოლოს მიღწევის შემდეგ. განაგრძეთ დასტის ზემოდან დაბეჭდვა და მისი ამოღება, სანამ დასტა ცარიელი არ არის.

კოდი

C ++ პროგრამა ცალკეული სიტყვების დასაბრუნებლად

#include <bits/stdc++.h> 
using namespace std; 
  
void revWords(string str){ 
    stack<char> st; 
  
    for(int i = 0; i < str.length(); ++i){ 
        if(str[i] != ' '){ 
            st.push(str[i]);
        }
  
        else{ 
            while(st.empty() == false){ 
                cout << st.top(); 
                st.pop(); 
            } 
            cout << " "; 
        } 
    } 
  
    while(st.empty() == false){ 
        cout << st.top(); 
        st.pop(); 
    } 
} 
  
int main(){ 
    string s = "TutorialCup - changing the way of learning"; 
    
    revWords(s); 
    
    return 0; 
}
puClairotuT - gnignahc eht yaw fo gninrael

ჯავა პროგრამა ცალკეული სიტყვების დასაბრუნებლად

import java.io.*; 
import java.util.*; 
  
class reverseWords{ 
  
    static void revWords(String str){
        
        Stack<Character> st=new Stack<Character>(); 
       
        for(int i = 0; i < str.length(); ++i){ 
            if(str.charAt(i) != ' '){ 
                st.push(str.charAt(i));
            }
       
            else{ 
                while (st.empty() == false){ 
                    System.out.print(st.pop()); 
                } 
                System.out.print(" "); 
            } 
        } 
       
        while(st.empty() == false){ 
            System.out.print(st.pop()); 
        } 
    } 
      
    public static void main(String[] args){ 
       String s = "TutorialCup - changing the way of learning"; 
        revWords(s); 
    } 
}
puClairotuT - gnignahc eht yaw fo gninrael

სირთულის ანალიზი

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

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

სივრცის სირთულე

O (n) იმიტომ, რომ ჩვენ გამოვიყენეთ სივრცე n სიმბოლოების შესანახად.

დასტის გამოყენების გარეშე

ალგორითმი

  1. სიგრძის სტრიქონის ინიცირება n.
  2. შექმენით სხვა სტრიქონი თავდაპირველი სტრიქონის დასაბრუნებლად. ორიგინალი სტრიქონის გადაკვეთა და შეამოწმეთ არის თუ არა ორიგინალი სიმების ამჟამინდელი სიმბოლო თეთრი სივრცე. შემდეგ განაახლეთ ახალი სტრიქონი, როგორც მიმდინარე სიმბოლოს და ახალი სტრიქონის შერწყმა.
  3. სხვა შემთხვევაში დაბეჭდეთ ახალი სტრიქონი და განაახლეთ ახალი სტრიქონი, როგორც ცარიელი.
  4. ახალი სტრიქონის დაბეჭდვა.

კოდი

C ++ პროგრამა ცალკეული სიტყვების დასაბრუნებლად

#include <bits/stdc++.h> 
using namespace std; 
  
void revWords(string str){ 
    string s;
    
    for(int i = 0; i < str.length(); ++i){ 
        if(str[i] != ' '){ 
            s = str[i]+s;
        }
  
        else{ 
            cout << s <<" "; 
            s = "";
        } 
    } 
  
    cout << s;
} 
  
int main(){ 
    string s = "TutorialCup - changing the way of learning"; 
    
    revWords(s); 
    
    return 0; 
}
puClairotuT - gnignahc eht yaw fo gninrael

ჯავა პროგრამა ცალკეული სიტყვების დასაბრუნებლად

import java.io.*; 
import java.util.*; 
  
class reverseWords{ 
  
    static void revWords(String str){
        
        String s = "";
        for(int i = 0; i < str.length(); ++i){ 
            if(str.charAt(i) != ' '){ 
                s = str.charAt(i)+s;
            }
       
            else{ 
                System.out.print(s+" ");
                s = "";
            } 
        } 
       
        System.out.print(s); 
    } 
      
    public static void main(String[] args){ 
       String s = "TutorialCup - changing the way of learning";
        revWords(s); 
    } 
}
puClairotuT - gnignahc eht yaw fo gninrael

სირთულის ანალიზი

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

O (n ^ 2) სადაც n არის სიმების ზომა. ჩვენ გადავკვეთეთ სიმების სიმბოლოები. მაგრამ ერთი სიმბოლოს შეერთების ოპერაცია ახალ სტრიქონთან და მისი ისევ იგივე სიმების ცვლადში შენახვა სჭირდება O (n) ყოველ ჯერზე.

სივრცის სირთულე

O (n) რადგან ჩვენ გამოვიყენეთ სივრცე n სიმბოლოების შესანახად.

C ++ სიმების ნაკადის გამოყენება

ალგორითმი

  1. სიგრძის სტრიქონის ინიცირება n.
  2. შექმენით სხვა სტრიქონი თავდაპირველი სტრიქონის დასაბრუნებლად. შექმენით stringstream ობიექტი და ჩაწერეთ ორიგინალი სტრიქონი მასში.
  3. ამის შემდეგ გადაკვეთეთ და წაიკითხეთ თითოეული სიტყვა სტრიქონში და დაბეჭდეთ საპირისპირო თანმიმდევრობით.

კოდი

C ++ პროგრამა ცალკეული სიტყვების დასაბრუნებლად

#include <bits/stdc++.h> 
using namespace std; 
  
void revWords(string str){ 
    
    string word; 
   
    stringstream s(str); 
   
    while(s >> word){ 
        reverse(word.begin(),word.end()); 
        cout<<word<<" "; 
    }
} 
  
int main(){ 
    string s = "TutorialCup - changing the way of learning"; 
    
    revWords(s); 
    
    return 0; 
}
puClairotuT - gnignahc eht yaw fo gninrael

სირთულის ანალიზი

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

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

სივრცის სირთულე

O (n) რადგან ჩვენ გამოვიყენეთ სივრცე n სიმბოლოების შესანახად.

Java 8 ნაკადის გამოყენება

ალგორითმი

  1. სიგრძის სტრიქონის ინიცირება n.
  2. შექმენით სხვა სტრიქონი თავდაპირველი სტრიქონის დასაბრუნებლად. შეცვალეთ ორიგინალი სტრიქონის სიტყვები ნაკადის გამოყენებით და შეუერთეთ მათ, რომელ სივრცესთანაც გამოიყენეთ კოლექტორი და შეინახეთ მისი შედეგი ახალ სტრიქონში.
  3. ახალი სტრიქონის დაბეჭდვა.

ჯავა პროგრამა ცალკეული სიტყვების დასაბრუნებლად

import java.io.*; 
import java.util.*;
import java.util.stream.Collectors; 
  
class reverseWords{ 
  
    static void revWords(String str){
        
        String result = Arrays.asList(str.split(" ")) 
                .stream() 
                .map(s -> new StringBuilder(s).reverse()) 
                .collect(Collectors.joining(" ")); 
  
        System.out.println(result);
    } 
      
    public static void main(String[] args){ 
        String s = "TutorialCup - changing the way of learning";
        revWords(s); 
    } 
}
puClairotuT - gnignahc eht yaw fo gninrael

სირთულის ანალიზი

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

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

სივრცის სირთულე

O (n) რადგან ჩვენ გამოვიყენეთ სივრცე n სიმბოლოების შესანახად.