TOJ 244

TOJ 244

題目

https://toj.tfcis.org/oj/pro/244/

將輸入的字串中小寫轉大寫,大寫轉小寫

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//By Koios1143
#include<iostream>
using namespace std;
int main(){
int n;
string s;
cin>>n>>s;
for(int i=0 ; i<s.size() ; i++){
if(s[i]<='Z'){
cout<<(char)(s[i]-'A'+'a');
}
else
cout<<(char)(s[i]-'a'+'A');
}
cout<<"\n";

return 0;
}

想法2

觀察一下 ASCII Table,會發現到 a 以及 A 之間剛好差了 $32$

並且將其對應到的數字轉換成二進位後會發現到它們只在第五個 bit是不同的

也就是說我們要做大小寫轉換,只需要反轉第五個 bit 即可

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//By Koios1143
#include<iostream>
using namespace std;
int t, x = (1<<5);
string s;
int main(){
cin>>t;
cin>>s;
for(int i=0 ; i<t ; i++){
cout<<(char)((int)s[i]^x);
}
cout<<"\n";
return 0;
}

複雜度分析

總時間複雜度為 $O(n)$