LeetCode 784. Letter Case Permutation

原题链接
原题大意:给定字符串s,字符串中每个字母的大小写不同可组成新的字符串,求出可能组成的全部字符串。下面是给出的例子:

Examples:
Input: S = "a1b2"
Output: ["a1b2", "a1B2", "A1b2", "A1B2"]

Input: S = "3z4"
Output: ["3z4", "3Z4"]

Input: S = "12345"
Output: ["12345"]

分析:每个字母可大写可小写,用0,1代表该字母的大小写的状态,1为大写。若字符串为a1b2,包含两个字母,则两个字母所有的状态组合为{00,01,10,11},将枚举状态看作二进制数,则化为十进制为{0,1,2,3},这样问题就能很好地被解决了。

#include<iostream>
#include<vector>
#include<string>
#include<bitset>
#include<math.h>
using namespace std;

vector<string> letterCasePermutation(string& s)
{
   vector<string> ans;
   vector<int> letterPos;
   
   int mark = 1,size = s.size();
   if(size == 0 ) return ans;

   for(int i = 0; i < size; i++)
   {
       if(isalpha(s[i]))
       {
           s[i] = tolower(s[i]);
           mark *= 2;
           letterPos.push_back(i);
       }
   }

   for(int i = 0; i < mark; i++)
   {
       int t = i;
       string ts = s;
       for(int j = 0;j < letterPos.size(); j++)
       {
           //cout << t << " " << j << " " << (t >> j) % 2 << endl;
           if((t >> j) % 2 == 1) 
           {
               ts[letterPos[letterPos.size() - 1 - j]] = toupper(s[letterPos[letterPos.size() - 1 - j]]);
           }
           //ts[letterPos[j]] = (t >> j) % 2 == 1 ? toupper(s[letterPos[j]]) : s[letterPos[j]];
       }
       cout << ts << endl;
       ans.push_back(ts);

   }

   return ans;
}
int main()
{
   string s;
   s = "a1b2";
   vector<string> ans = letterCasePermutation(s);
   //for(int i = 0;i < ans.size(); i++)  cout << ans[i] << endl;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,221评论 0 13
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,325评论 1 44
  • 李翔说很多人意识不到自己正在“舒适圈”里,天天把“我每天都要加班”、“要养家带孩子”等借口挂在嘴边,认为自己的生活...
    刘小妹_7ea9阅读 152评论 0 0
  • 11月22日,是我的生日,今年这个生日注定与众不同且终身难忘,因为就在生日前一天,我莫名其妙丢了戴了20年...
    自在鸟李文阅读 639评论 0 3
  • 关键词:谷雨、柳堤、解忧杂货店 前情回顾: 周末正午,小小踏入念想许久的《旧爱杂货铺》,正在浏览展品的时候,门铃响...
    猫饼干阅读 204评论 2 0