int atoi (string s):
int num = 0
int i = 0
bool neg = false
if s[0] == '-':
neg = true
i = 1
if s[0] == '+':
i = 1
for (; i< len(s); i++):
if (s[i] - '0' < 0 || s[i] - '0' > 9):
break
num = num * 10 + s[i] - '0' // possible overflow
if neg:
num = -1 * num
return num
You need only 10 inputs to test this function. Inputs in italics are not necessary.
//smoke / basic
123, -123
123F1, -123f1
//hard
INT_MAX, INT_MIN
+123
//boundary values
0, null, "" (empty), " " (blank), a
// not required
abc (covered by a)
INT_MAX +1, INT_MIN -1 (requirement does not state this)
[Hat tip to PIE, JE]
itoa seems to lack special conditions comparatively.
string itoa (int num):
stringBuffer sb = new stringBuffer();
bool neg = false
if num < 0:
neg = true
num = num * -1
while (num > 0):
sb.insert(0, (char) num %10 + '0')
num = num /10
if neg:
sb.insert(0, '-')
return sb.toString()
[Hat tip to PIE]
No comments:
Post a Comment