. , , Java , . .
: loadstring, . , .
10- (, ) . , Integer.tryParse. , div/mul . , , "-". , .
:
- ( !!!). =
- fail/pass , ( ) .
- .
- .
, . , / , , , ... - , .
, , . Java , #:-) , ...
public int ConvertStringToInt(string s)
{
int val = 0;
if (s[0] == '-')
{
for (int i = 1; i < s.Length; ++i )
{
if (s[i] >= '0' && s[i] <= '9')
{
throw new Exception();
}
val = val * 10 + s[i] - '0';
}
return -val;
}
else
{
for (int i = 0; i < s.Length; ++i)
{
if (s[i] >= '0' && s[i] <= '9')
{
throw new Exception();
}
val = val * 10 + s[i] - '0';
}
return val;
}
}
, , , , 1. , , ( ), 2. , , , , , 2. :
public int ConvertStringToInt(string s)
{
int val = 0;
if (s[0] == '-')
{
for (int i = 1; i < s.Length; ++i )
{
val = val * 10 + s[i] - '0';
}
return -val;
}
else
{
for (int i = 0; i < s.Length; ++i)
{
val = val * 10 + s[i] - '0';
}
return val;
}
}
, . , ? , , . , , , "-" char, . :
public bool EqualsStringInt(string s, int value)
{
int val = 0;
if (s[0] == '-')
{
if (value >= 0) { return false; }
for (int i = 1; i < s.Length; ++i )
{
val = val * 10 + s[i] - '0';
}
return (-val) == value;
}
else
{
if (value < 0) { return false; }
for (int i = 0; i < s.Length; ++i)
{
val = val * 10 + s[i] - '0';
}
return val == value;
}
}
++, : ++: std::string . , , .
, . , :
, .
, , . , :
, :
public bool EqualsIntString(int value, string s)
{
if (s.Length == 0) { return false; }
if ((s[0] == '-' && value >= 0) || (s[0] != '-' && value < 0)) { return false; }
int limit = 0;
if (value < 0)
{
limit = 1;
value = -value;
}
for (int i=s.Length-1; i>=limit; --i)
{
char expected = (char)('0' + (value % 10));
value /= 10;
if (s[i] != expected) { return false; }
}
return true;
}
, , . 1.
? ... ++ . .
10log . . . , 10log , , !
. , , , .
, , .