-
StringsData TypesFundamentalsBasic Language FeaturesAlgorithmsLogic
Description Many wasted division operations, but this looks elegant.
Code public class Replacer { public static string sValueReplacer(string source, int new_text, char old_char) { char[] intermediate = source.ToCharArray(); for (int i = intermediate.Length - 1; i >= 0; --i) { if (intermediate[i] == old_char) { intermediate[i] = (char) (0x30 | new_text % 10); new_text /= 10; } } return new string(intermediate); } }
Test Cases namespace Solution { using NUnit.Framework; using System; // TODO: Replace examples and use TDD by writing your own tests [TestFixture] public class SolutionTest { [Test] public void MyTest() { Assert.AreEqual("0000008100596710003=1811", Replacer.sValueReplacer("0000##81#059671####=1811", 3, '#')); Assert.AreEqual("9182 7391238 910003", Replacer.sValueReplacer("9182 7391238 91$$$$", 3, '$')); Assert.AreEqual("The counter is 011", Replacer.sValueReplacer("The counter is ---", 11, '-')); } } }
Output:
-
Code using System;using System.Linq;using System.Collections.Generic;public class Test{static void Main(){Console.WriteLine(Replacer.sValueReplacer("0000##81#059671####=1811", 3, '#'));}}public class Replacer{public static string sValueReplacer(string source, int index, char char_to_replace){string res = source;try{if (!string.IsNullOrEmpty(char_to_replace.ToString())){if (res.Contains(char_to_replace.ToString())){// Get ALL Indexes position of charactervar Indexes = GetIndexes(res, char_to_replace.ToString());int max = GetMaxValue(Indexes.Count);while (index >= max){index -= max;}var new_value = index.ToString().PadLeft(Indexes.Count, '0');for (int i = 0; i < Indexes.Count; i++){res = res.Remove(Indexes[i], 1).Insert(Indexes[i], new_value[i].ToString());}}}}catch (Exception){res = source;}return res;}private static List<int> GetIndexes(string mainString, string toFind)- public class Replacer
- {
- public static string sValueReplacer(string source, int new_text, char old_char)
- {
var Indexes = new List<int>();for (int i = mainString.IndexOf(toFind); i > -1; i = mainString.IndexOf(toFind, i + 1))- char[] intermediate = source.ToCharArray();
- for (int i = intermediate.Length - 1; i >= 0; --i)
- {
// for loop end when i=-1 (line.counter not found)Indexes.Add(i);}return Indexes;}private static int GetMaxValue(int numIndexes){int max = 0;for (int i = 0; i < numIndexes; i++)- if (intermediate[i] == old_char)
- {
if (i == 0)max = 9;elsemax = max * 10 + 9;- intermediate[i] = (char) (0x30 | new_text % 10);
- new_text /= 10;
- }
return max;- }
- return new string(intermediate);
- }
- }
Test Cases - namespace Solution {
- using NUnit.Framework;
- using System;
- // TODO: Replace examples and use TDD by writing your own tests
- [TestFixture]
- public class SolutionTest
- {
- [Test]
- public void MyTest()
- {
- Assert.AreEqual("0000008100596710003=1811", Replacer.sValueReplacer("0000##81#059671####=1811", 3, '#'));
- Assert.AreEqual("9182 7391238 910003", Replacer.sValueReplacer("9182 7391238 91$$$$", 3, '$'));
- Assert.AreEqual("The counter is 011", Replacer.sValueReplacer("The counter is ---", 11, '-'));
- }
- }
- }
- All
- {{group.name}} ({{group.count}})
This comment has been reported as {{ abuseKindText }}.
Show
This comment has been hidden. You can view it now .
This comment can not be viewed.
- |
- Reply
- Edit
- View Solution
- Expand 1 Reply Expand {{ comments?.length }} replies
- Collapse
- Remove
- Remove comment & replies
- Report
{{ fetchSolutionsError }}