Помогите! Нужно проверить: является ли цифры в числе неповторимыми, если да, то вывести это число. c#
internal class Program
{
static void Main(string[] args)
{
string number = Console.ReadLine();
int tempNum = 0;
if (Sort(number, tempNum) == true)
Console.WriteLine($"программа выполнена успешно, ваше число: {number}");
else
{
Console.WriteLine("Ваше число повторяется, введите разные цифры.");
}
}
static bool Sort(string number, int tempNum)
{
for (int i = 1; i<number.Length; i++)
{
if (number[i] != number[tempNum])
{
tempNum = number[i];
}
else
{
return false;
}
}
return true;
}
}
Вот мой код, я решил делать это через массив. Не знаю верно ли выбрал путь, но выводит ошибку System.IndexOutOfRangeException: "Индекс находился вне границ массива."
Ответы (2 шт):
Автор решения: Сергей Татевосян
→ Ссылка
internal class Program
{
static void Main(string[] args)
{
string enteredString = Console.ReadLine();
//Проверяем что ввели числовое значение
var isNumeric = int.TryParse(enteredString , out int n);
if (!isNumeric)
{
Console.WriteLine($"Введено неверное значение. Введите число.");
}
else
{
if (UniqueCharactersInAString(enteredString))
{
Console.WriteLine($"Программа выполнена успешно, ваше число: {enteredString}");
}
else
{
Console.WriteLine("Цифры в введённом числе повторяются, введите разные цифры.");
}
}
}
//Проверяет уникальность каждого символа в строке(что символ не дублируется)
static bool UniqueCharactersInAString(string originalString)
{
foreach (char ch in originalString)
{
if (originalString.Count(c => c == ch) > 1)
{
return false;
}
}
return true;
}
}
Автор решения: Nowhere Man
→ Ссылка
Такой вариант, использующий только "простые" средства в виде циклов и метода Char.IsDigit:
using System;
class Program
{
static void Main(string[] args)
{
string number = Console.ReadLine();
Console.WriteLine(OnlyUniqueDigits(number)
? $"программа выполнена успешно, ваше число: {number}"
: "Неправильный ввод, введите разные цифры."
);
}
static bool OnlyUniqueDigits(string number)
{
for (int i = 0, n = number.Length; i < n - 1; i++)
{
if (!Char.IsDigit(number[i])) { // найден нецифровой символ
return false;
}
for (int j = i + 1; j < n; j++) {
if (number[i] == number[j]) { // найден дубликат
return false;
}
}
}
return true;
}
}