-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstringManipulation.cs
61 lines (56 loc) · 1.84 KB
/
stringManipulation.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using System;
using System.Collections.Generic;
using System.Linq;
namespace interviewPractice
{
public class StringManipulation
{
public int makeAnagram(string a, string b)
{
int deletions = 0;
var letterMap = new Dictionary<char,int>();
foreach(var letter in a ){
if(letterMap.ContainsKey(letter)){
letterMap[letter]++;
}else{
letterMap.Add(letter,1);
}
}
foreach(var letter in b ){
if(letterMap.ContainsKey(letter)){
letterMap[letter]--;
}else{
letterMap.Add(letter,-1);
}
}
foreach(var item in letterMap){
if(item.Value!=0) deletions+=Math.Abs(item.Value);
}
return deletions;
}
public string isValid(string input){
string valid="";
var letterMap = new Dictionary<char, int>();
foreach(char letter in input)
{
if(letterMap.ContainsKey(letter))
{
letterMap[letter]++;
}else{
letterMap.Add(letter,1);
}
}
//Test case 1: Frequency for each letter is the same
if(letterMap.Values.Distinct().Count()==1){valid="YES";}
//Test Case 2: Frequency of one character varies by 1
if(letterMap.Values.Distinct().Count() ==2)
{
var DistinctList = letterMap.Values.Distinct().ToList();
if((Math.Abs(DistinctList[0]-DistinctList[1]))==1){
valid ="YES";
}
}else{valid = "NO";}
return valid;
}
}
}