19/02/2023
ကျွန်တော်တို့ String တွေကို upper case ကနေ lower case ပြောင်းတဲ့အခါမှာ built-in function တွေ သုံးရင်သုံး,
မသုံးရင် ascii value တွေ ပေါင်းပြီး ပြောင်းကျတယ်
ဒီနေ့တော့ bitwise operator တွေကိုပဲ သုံးပြီးပြောင်းမှာပါ
ပထမဦးဆုံး ကာရိုက်တာတွေအတွက် binary form ကိုချရေးကြည့်ရအောင်
Character Binary
'A' 01000001
'a' 01100001
'B' 01000010
'b' 01100010
'C' 01000011
'c' 01100011
Upper case နဲ့ Lower case ကြားမှာ 5th ကြိမ်မြောက် bit တစ်ခုပဲကွာနေတာပါ
ဒါကြောင့်မလို့ upper characterကရဲ့ 5th bitကို 1 အဖြစ်ပြောင်းနိုင်ရင် lower case ရမှာပါ
သူ့ကို အောက်က mask တပ်ပြီး ပြောင်းနိုင်ပါတယ်
mask = 1 0
___
array ထဲမှာ element တိုင်းက 2 ကြိမ်ပါတယ် ဒါပေမဲ့ element တစ်လုံးက 1 ကြိမ်ပဲပါတယ် အဲ့ element ကိုလိုချင်တယ် ဆိုပါစို့
Array = {5,6,7,6,5,7,8,9,9}
Array ထဲမှာ တစ်ကြိမ်ထဲပါတာ 8 ဆိုတဲ့ integerပဲဖြစ်ပါတယ်
ကျန်တာက 2 ကြိမ်စီပါတယ်
8 ကိုဘယ်လိုရှာမလဲ?
sorting စီပြီးသွားမလား mapping လုပ်ပြီး count တိုးသွားမလား
ဖြေရှင်းလို့ရတဲ့နည်းအမျိုးမျိုးရှိတယ်
sorting စီမယ်ဆိုရင်တောင် time မှာ O(nlogn) ကြာပြီး space ကO(n) ကုန်နေပြီ
ဒါပေမဲ့ ^ operator ကိုသုံးပြီး ဖြေရှင်းလို့ရတယ်
Time ဘက်ကကြည့်ရင် O(n)
Space ဘက်ကကြညိ့ရင် O(1)ပဲကုန်မယ်
အောက်ကလိုမျိုးလုပ်မှာပါ
int uniqueInteger(int[] array){
int x=0;
for(int i=0;i