public class Solution {
public int[] TwoSum(int[] nums, int target) {
Dictionary<int, int> dic = new Dictionary<int, int>();
for (int i = 0; i < nums.Length; i++)
{
if (dic.ContainsKey(nums[i]))
{
if (nums[i] * 2 == target)
{
return new int[] { dic[nums[i]], i };
}
}
else
{
dic.Add(nums[i], i);
}
}
for (int i = 0; i < nums.Length; i++)
{
int value = target - nums[i];
if (dic.ContainsKey(value) && dic[value] != i)
{
return new int[] { i, dic[value] };
}
}
return new int[] { 0, 0 };
}
}
public class Solution {
public string DefangIPaddr(string address)
{
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < address.Length; i++)
{
if (address[i] != '.')
{
stringBuilder.Append(address[i]);
}
else
{
stringBuilder.Append("[.]");
}
}
return stringBuilder.ToString();
}
}
public class Solution {
public void ReverseString(char[] s)
{
int left = 0;
int right = s.Length - 1;
while (left < right)
{
char tmp = s[left];
s[left] = s[right];
s[right] = tmp;
left++;
right--;
}
}
}
public class Solution {
public string ReverseWords(string s)
{
string[] str = s.Trim().Split(' ');
StringBuilder stringBuilder = new StringBuilder();
for (int i = str.Length - 1; i >= 0; i--)
{
if (str[i] == "")
{
continue;
}
stringBuilder.Append(str[i] + ' ');
}
return stringBuilder.ToString().Trim();
}
}
public class Solution {
public string ReverseWords(string s)
{
char[] str = s.ToCharArray();
int n = trim(str);
if (n == 0)
{
return "";
}
reverse(str, 0, n - 1);
int p = 0;
while (p < n)
{
int r = p;
while (r < n && str[r] != ' ')
{
r++;
}
reverse(str, p, r - 1);
p = r + 1;
}
char[] newStr = new char[n];
for (int i = 0; i < n; i++)
{
newStr[i] = str[i];
}
return new String(newStr);
}
private int trim(char[] str)
{
int i = 0;
int k = 0;
int n = str.Length - 1;
while (i <= n && str[i] == ' ')
{
i++;
}
while (i <= n)
{
if (str[i] == ' ')
{
if (i + 1 <= n && str[i + 1] != ' ')
{
str[k++] = ' ';
}
}
else
{
str[k++] = str[i];
}
i++;
}
return k;
}
private void reverse(char[] str, int p, int r)
{
int left = p;
int right = r;
while (left < right)
{
char temp = str[left];
str[left] = str[right];
str[right] = temp;
left++;
right--;
}
}
}
public class Solution {
public bool IsPalindrome(string s)
{
int left = 0;
int right = s.Length - 1;
while (left < right)
{
while (left < right && !IsLetterOrNum(s[left]))
{
left++;
}
while (left < right && !IsLetterOrNum(s[right]))
{
right--;
}
if (toLower(s[left]) != toLower(s[right]))
{
return false;
}
left++;
right--;
}
return true;
}
private bool IsLetterOrNum(char c)
{
if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
{
return true;
}
return false;
}
private char toLower(char c)
{
if (c >= 'a' && c <= 'z')
{
return c;
}
if (c >= '0' && c <= '9')
{
return c;
}
return (char)((int)c + 32);
}
}
public class Solution {
public bool IsPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0))
{
return false;
}
int revernum = 0;
while (revernum < x)
{
revernum = revernum * 10 + x % 10;
x /= 10;
}
if (x == revernum || x == revernum / 10)
{
return true;
}
return false;
}
}
public class Solution {
public int LengthOfLastWord(string s) {
int n = s.Length;
int i = n - 1;
while (i >= 0 && s[i] == ' ')
{
i--;
}
if (i < 0)
{
return 0;
}
int length = 0;
while (i >= 0 && s[i] != ' ')
{
length++;
i--;
}
return length;
}
}
public class Solution {
public string ReplaceSpace(string s) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < s.Length; i++)
{
if (s[i] == ' ')
{
stringBuilder.Append("%20");
}
else
{
stringBuilder.Append(s[i]);
}
}
return stringBuilder.ToString();
}
}
public class Solution {
public string ReverseLeftWords(string s, int n) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = n; i < s.Length; i++)
{
stringBuilder.Append(s[i]);
}
for (int i = 0; i < n; i++)
{
stringBuilder.Append(s[i]);
}
return stringBuilder.ToString();
}
}
public class Solution {
public int RemoveDuplicates(int[] nums) {
if (nums.Length < 2)
{
return nums.Length;
}
int left = 0;
int right = 1;
while (right < nums.Length)
{
if (nums[left] != nums[right])
{
left++;
nums[left] = nums[right];
}
right++;
}
return left + 1;
}
}
public class Solution {
public int StrToInt(string str) {
long value = 0;
String s = str.Trim();
if (s.Length == 0)
{
return 0;
}
if (s[0] != '+' && s[0] != '-' && !(s[0] >= '0' && s[0] <= '9'))
{
return 0;
}
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < s.Length; i++)
{
if (i == 0)
{
stringBuilder.Append(s[i]);
}
else
{
if (s[i] >= '0' && s[i] <= '9')
{
stringBuilder.Append(s[i]);
}
else
{
break;
}
value = Convert.ToInt64(stringBuilder.ToString());
if (value > Int32.MaxValue)
{
return Int32.MaxValue;
}
else if (value < Int32.MinValue)
{
return Int32.MinValue;
}
}
}
if (stringBuilder.Length == 1)
{
if (stringBuilder[0] == '+' || stringBuilder[0] == '-')
{
return 0;
}
}
value = Convert.ToInt64(stringBuilder.ToString());
return (int)value;
}
}