ສັບປ່ຽນ ຄຳ ເວົ້າຂອງແຕ່ລະຄົນ


ລະດັບຄວາມຫຍຸ້ງຍາກ Easy
ຖາມເລື້ອຍໆໃນ Amazon
Stack string

ສາ​ລະ​ບານ

ຖະແຫຼງການບັນຫາ

ບັນຫາ“ ຄຳ ສັບທີ່ກ່ຽວຂ້ອງກັບແຕ່ລະ ຄຳ ສັບ” ລະບຸວ່າທ່ານໄດ້ຮັບ string s. ບັດນີ້, ພິມ ຄຳ ສັບດ້ານຫລັງຂອງ ຄຳ ສັບສ່ວນຕົວທັງ ໝົດ ໃນສາຍ.

ສັບປ່ຽນ ຄຳ ເວົ້າຂອງແຕ່ລະຄົນ

ຍົກຕົວຢ່າງ

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

ການໃຊ້ Stack

ລະບົບວິເຄາະ

  1. ເລີ່ມຕົ້ນເສັ້ນຄວາມຍາວ n.
  2. ສ້າງເປັນ stack ໂຄງສ້າງຂໍ້ມູນ. ຂ້າມຜ່ານສາຍແລະກວດເບິ່ງວ່າຕົວລະຄອນປະຈຸບັນໃນສາຍບໍ່ແມ່ນບ່ອນຫວ່າງ. ຫຼັງຈາກນັ້ນ, ຊຸກຍູ້ໃຫ້ມີລັກສະນະປະຈຸບັນໃນຊັ້ນວາງ.
  3. ອື່ນໃນຂະນະທີ່ຂະ ໜາດ ຂອງ stack ບໍ່ແມ່ນ 0, ພິມອົງປະກອບທີ່ຢູ່ເທິງສຸດຂອງ stack ແລະຈາກນັ້ນປ້ອນ / ເອົາອອກຈາກ stack.
  4. ດຽວນີ້, ຫລັງຈາກຮອດປາຍສາຍ. ສືບຕໍ່ພິມເທິງສຸດຂອງ stack ແລະເອົາອອກໃນຂະນະທີ່ stack ບໍ່ຫວ່າງຢູ່.

ລະຫັດ

ໂປຣແກຣມ 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

Java Program ກັບ Reverse ຄຳ ສັບສ່ວນຕົວ

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.

ໂດຍບໍ່ຕ້ອງໃຊ້ Stack

ລະບົບວິເຄາະ

  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

Java Program ກັບ Reverse ຄຳ ສັບສ່ວນຕົວ

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. ສ້າງອີກສາຍ ໜຶ່ງ ເພື່ອປ່ຽນສາຍເດີມ. ສ້າງວັດຖຸຕາມສາຍແລະສົ່ງສາຍຕົ້ນສະບັບເຂົ້າໃນນັ້ນ.
  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. ພິມສາຍ ໃໝ່.

Java Program ກັບ Reverse ຄຳ ສັບສ່ວນຕົວ

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