បញ្ច្រាសពាក្យបុគ្គល


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

តារាង​មាតិកា

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

បញ្ហា“ បញ្ច្រាសពាក្យបុគ្គល” បញ្ជាក់ថាអ្នកត្រូវបានផ្តល់ឱ្យ ខ្សែអក្សរ s ។ ឥឡូវបោះពុម្ពបញ្ច្រាសរាល់ពាក្យនីមួយៗនៅក្នុងឃ្លា។

បញ្ច្រាសពាក្យបុគ្គល

ឧទាហរណ៍

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

ការប្រើប្រាស់ជង់

ក្បួនដោះស្រាយ

  1. ចាប់ផ្តើមខ្សែនៃប្រវែង n ។
  2. បង្កើត ជង់ រចនាសម្ព័ន្ធទិន្នន័យ។ ឆ្លងកាត់ខ្សែអក្សរហើយពិនិត្យមើលថាតើតួអក្សរបច្ចុប្បន្ននៅក្នុងខ្សែអក្សរមិនមានចន្លោះពណ៌សទេ។ បន្ទាប់មករុញតួអក្សរបច្ចុប្បន្ននៅក្នុងជង់។
  3. ក្រៅពីនេះទំហំនៃជង់មិនមែន ០ បោះពុម្ពធាតុនៅខាងលើជង់ហើយបន្ទាប់មកលេច / យកវាចេញពីជង់។
  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 គឺជាទំហំនៃខ្សែអក្សរ។ យើងបានឆ្លងកាត់តួអក្សរនៅក្នុងខ្សែអក្សរ។ ប៉ុន្តែប្រតិបត្តិការកន្ត្រាក់នៃតួអក្សរតែមួយជាមួយខ្សែអក្សរថ្មីហើយរក្សាទុកវាម្តងទៀតទៅជាអថេរខ្សែតែមួយ អូរ (n) គ្រប់ពេល។

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

អូរ (n) ពីព្រោះយើងប្រើចន្លោះផ្ទុកអក្សរ n ។

ការប្រើប្រាស់ខ្សែអក្សរ C ++

ក្បួនដោះស្រាយ

  1. ចាប់ផ្តើមខ្សែនៃប្រវែង n ។
  2. បង្កើតខ្សែអក្សរមួយទៀតដើម្បីបញ្ច្រាសខ្សែអក្សរដើម។ បង្កើតវត្ថុខ្សែមួយហើយហុចខ្សែអក្សរដើមនៅក្នុងវា។
  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

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

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

អូរ (n) ដែល n គឺជាទំហំនៃខ្សែអក្សរ។ យើងបានឆ្លងកាត់តួអក្សរនៅក្នុងខ្សែអក្សរ។

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

អូរ (n) ពីព្រោះយើងប្រើចន្លោះផ្ទុកអក្សរ n ។

ការប្រើប្រាស់ស្ទ្រីមជ្វា ៨

ក្បួនដោះស្រាយ

  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

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

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

អូរ (n) ដែល n គឺជាទំហំនៃខ្សែអក្សរ។ យើងបានឆ្លងកាត់តួអក្សរនៅក្នុងខ្សែអក្សរ។

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

អូរ (n) ពីព្រោះយើងប្រើចន្លោះផ្ទុកអក្សរ n ។