#include <iostream>
using namespace std;
class Solution {
public:
int Sum_Solution(int n);
int Add(int num1, int num2);
int MAX_49 = 0;
int StrToInt(string str);
int ispositive(string str);
int StrToIntCore(string str, int len, int index);
bool duplicate(int numbers[], int length, int* duplication);
};
int Solution::Sum_Solution(int n) {
int result = n;
(n) && (result += Sum_Solution(n - 1));
return result;
}
int Solution::Add(int num1, int num2) {
int sum = num1 ^ num2;
int carry = (num1 & num2) << 1;
while (carry) {
int temp = sum;
sum ^= carry;
carry = (temp & carry) << 1;
}
return sum;
}
int Solution::StrToInt(string str) {
int len = str.size();
if (len == 0) return 0;
if (len == 1 && (str[0] < '0' || str[0] > '9')) {
MAX_49 = 1;
return 0;
}
int flag = ispositive(str);
int result = 0;
if (flag == 3) {
result = StrToIntCore(str, len, 0);
}
else{
result = StrToIntCore(str, len, 1);
result = (flag > 1) ? (-result) : result;
}
return result;
}
int Solution::ispositive(string str) {
if (str[0] == '+') return 1;
if (str[0] == '-') return 2;
return 3;
}
int Solution::StrToIntCore(string str, int len, int index) {
int result = 0;
while (index < len) {
if (str[index] < '0' || str[index] > '9') {
MAX_49 = 1;
return 0;
}
result = result * 10 + (str[index] - '0');
if (result > INT_MAX) {
MAX_49 = 2;
return 0;
}
index++;
}
return result;
}
bool Solution::duplicate(int numbers[], int length, int* duplication) {
if (length == 0) return false;
int i = 0;
while (i < length) {
if (numbers[i] == i) i++;
else if (numbers[numbers[i]] == numbers[i]) {
*duplication = numbers[i];
return true;
}
else {
swap(numbers[i], numbers[numbers[i]]);
}
}
return false;
}
void test1() {
int n = 5;
Solution s;
cout << s.Sum_Solution(n);
return;
}
void test2() {
Solution s;
cout << s.Add(3, 3);
return;
}
void test3() {
string str = "-12345";
Solution s;
cout << s.StrToInt(str);
return;
}
void test4() {
int numbers[7] = { 2,3,1,0,2,5,3 };
int length = 7;
int* duplication = new int(1);
*duplication = -1;
Solution s;
cout << s.duplicate(numbers, length, duplication) << endl;
cout << "重复的数字是:" << *duplication;
return;
}
int main() {
test4();
system("pause");
return 0;
}