Design Patter 11: Subsets | Problem: Letter Case Permutations
This commit is contained in:
		
							parent
							
								
									55ca543bdc
								
							
						
					
					
						commit
						4ab2448243
					
				
							
								
								
									
										26
									
								
								11_letter_case_permutation.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								11_letter_case_permutation.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					/* Problem: https://leetcode.com/problems/letter-case-permutation/
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "lib_leetcode.h"
 | 
				
			||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					#include <string>
 | 
				
			||||||
 | 
					#include <vector>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					std::vector<std::string> solution(const std::string input) {
 | 
				
			||||||
 | 
					  std::vector<std::string> perms = {""};
 | 
				
			||||||
 | 
					  for (const char c : input) {
 | 
				
			||||||
 | 
					    for (std::size_t i = 0, upto = perms.size(); i < upto; i++) {
 | 
				
			||||||
 | 
					      if (std::isalpha(c))
 | 
				
			||||||
 | 
					        perms.push_back(perms[i] + (char)std::toupper(c));
 | 
				
			||||||
 | 
					      perms[i] += std::tolower(c);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return perms;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main() {
 | 
				
			||||||
 | 
					  std::cout << solution("a1b2") << '\n'
 | 
				
			||||||
 | 
					            << solution("3z4") << '\n'
 | 
				
			||||||
 | 
					            << solution("mQe") << '\n'
 | 
				
			||||||
 | 
					            << solution("03fH") << '\n';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -24,3 +24,5 @@ add_executable(8_binary_tree_level_order_traversal 8_binary_tree_level_order_tra
 | 
				
			|||||||
add_executable(9_path_sum_iii 9_path_sum_iii.cpp)
 | 
					add_executable(9_path_sum_iii 9_path_sum_iii.cpp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
add_executable(10_find_the_median_of_a_number_stream 10_find_the_median_of_a_number_stream.cpp)
 | 
					add_executable(10_find_the_median_of_a_number_stream 10_find_the_median_of_a_number_stream.cpp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_executable(11_letter_case_permutation 11_letter_case_permutation.cpp)
 | 
				
			||||||
@ -6,6 +6,8 @@
 | 
				
			|||||||
#include <iostream>
 | 
					#include <iostream>
 | 
				
			||||||
#include <limits>
 | 
					#include <limits>
 | 
				
			||||||
#include <queue>
 | 
					#include <queue>
 | 
				
			||||||
 | 
					#include <string>
 | 
				
			||||||
 | 
					#include <typeinfo>
 | 
				
			||||||
#include <vector>
 | 
					#include <vector>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Below TreeNode definition is copied from the problem at
 | 
					/* Below TreeNode definition is copied from the problem at
 | 
				
			||||||
@ -58,9 +60,11 @@ std::ostream &operator<<(std::ostream &out, const std::vector<T> &vec) {
 | 
				
			|||||||
    out << "}";
 | 
					    out << "}";
 | 
				
			||||||
    return out;
 | 
					    return out;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  for (int num : vec) {
 | 
					  for (T e : vec) {
 | 
				
			||||||
    std::cout << num << ", ";
 | 
					    std::cout << e << ", ";
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  if (typeid(vec[0]) == typeid(std::string))
 | 
				
			||||||
 | 
					    out << '\b';
 | 
				
			||||||
  out << " \b\b}";
 | 
					  out << " \b\b}";
 | 
				
			||||||
  return out;
 | 
					  return out;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -73,7 +77,7 @@ std::ostream &operator<<(std::ostream &out,
 | 
				
			|||||||
    out << "}";
 | 
					    out << "}";
 | 
				
			||||||
    return out;
 | 
					    return out;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  for (const std::vector<int> &vec : vec_2d)
 | 
					  for (const std::vector<T> &vec : vec_2d)
 | 
				
			||||||
    out << vec << ", ";
 | 
					    out << vec << ", ";
 | 
				
			||||||
  out << " \b\b}";
 | 
					  out << " \b\b}";
 | 
				
			||||||
  return out;
 | 
					  return out;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user