using System; using System.Collections.Generic; using System.Linq; /*You are running a classroom and suspect that some of your students are passing around the answers to multiple choice questions disguised as random strings. Your task is to write a function that, given a list of words and a string, finds and returns the word in the list that is scrambled up inside the string, if any exists. There will be at most one matching word. The letters don't need to be in order or next to each other. The letters cannot be reused. Example: words = ['cat', 'baby', 'dog', 'bird', 'car', 'ax'] string1 = 'tcabnihjs' find_embedded_word(words, string1) -> cat (the letters do not have to be in order) string2 = 'tbcanihjs' find_embedded_word(words, string2) -> cat (the letters do not have to be together) string3 = 'baykkjl' find_embedded_word(words, string3) -> None / null (the letters cannot be reused) string4 = 'bbabylkkj' find_embedded_word(words, string4) -> baby string5 = 'ccc' find_embedded_word(words, string5) -> None / null string6 = 'breadmaking' find_embedded_word(words, string6) -> bird Complexity analysis variables: W = number of words in `words` S = maximal length of each word or string*/ class Solution { static void Main(String[] args) { string[] words = new string[] { "cat", "baby", "dog","bird", "car", "ax"}; string string1 = "ucayypoinrb"; string string2 = "tbcanihjs"; string string3 = "bbityydrj"; string string4 = "bbirdyaxrlikkj"; string string5 = "llkjnhyodugutd"; string string6 = "breadmaking"; Console.WriteLine("FIRST string returns " + ScanWords(words, string1)); Console.WriteLine("Second string returns " + ScanWords(words, string2)); Console.WriteLine("Third string returns " + ScanWords(words, string3)); Console.WriteLine("Fourth string returns " + ScanWords(words, string4)); Console.WriteLine("Fifth string returns " + ScanWords(words, string5)); Console.WriteLine("Sixth string returns " + ScanWords(words, string6)); } static string RemoveInputCharFromScrambledInput(char inputChar, string scrambledInput) { //Console.WriteLine(scrambledInput + " has " + inputChar.ToString()); char[] chars= scrambledInput.ToCharArray(); int index = Array.IndexOf(chars, inputChar); //Console.WriteLine("indes is " +index.ToString()); List<char> rem = chars.ToList(); //rem.Remove(inputChar); rem.RemoveAt(index); rem.ToArray(); //Console.WriteLine(rem.ToArray() +" " + Convert.ToString(rem.ToArray())); //Console.WriteLine(scrambledInput.ToList().Remove(inputChar).ToString()); //return scrambledInput.ToList().Remove(inputChar).ToString(); return new string(rem.ToArray()); } static bool CheckForCharInScrmbledInput( char inputChar, string scrambledInput) { if(scrambledInput.ToCharArray().Contains(inputChar)) { return true; } else return false; } static string ScanWords( string[] words, string scrambledInput) { foreach (var word in words) { int inputStringCount = scrambledInput.ToCharArray().Count(); string inputjambledword = scrambledInput; int loopCount=0; foreach(char inputChar in word) { // scrambled input string has this char inputjambledword = scrambledInput; if(CheckForCharInScrmbledInput(inputChar,inputjambledword)) { //remove the input char from the scrambedInput inputjambledword = RemoveInputCharFromScrambledInput( inputChar, inputjambledword); loopCount++; } else break; //if yes remove the char from both word and the scrambled input } // int postOperationCount = scrambledInput.ToCharArray().Count(); //if (word.ToCharArray().Count() == inputStringCount- postOperationCount) if (loopCount== word.ToCharArray().Count()) return word; } // Check the count of return string.Empty; } }
Write, Run & Share C# code online using OneCompiler's C# online compiler for free. It's one of the robust, feature-rich online compilers for C# language, running on the latest version 8.0. Getting started with the OneCompiler's C# compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as C#
and start coding.
OneCompiler's C# online compiler supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample program which takes name as input and print your name with hello.
using System;
namespace Sample
{
class Test
{
public static void Main(string[] args)
{
string name;
name = Console.ReadLine();
Console.WriteLine("Hello {0} ", name);
}
}
}
C# is a general purpose object-oriented programming language by Microsoft. Though initially it was developed as part of .net but later it was approved by ECMA and ISO standards.
You can use C# to create variety of applications, like web, windows, mobile, console applications and much more using Visual studio.
Data Type | Description | Range | size |
---|---|---|---|
int | To store integers | -2,147,483,648 to 2,147,483,647 | 4 bytes |
double | to store large floating point numbers with decimals | can store 15 decimal digits | 8 bytes |
float | to store floating point numbers with decimals | can store upto 7 decimal digits | 4 bytes |
char | to store single characters | - | 2 bytes |
string | to stores text | - | 2 bytes per character |
bool | to stores either true or false | - | 1 bit |
datatype variable-name = value;
When ever you want to perform a set of operations based on a condition or set of few conditions IF-ELSE is used.
if(conditional-expression) {
// code
}
else {
// code
}
You can also use if-else for nested Ifs and If-Else-If ladder when multiple conditions are to be performed on a single variable.
Switch is an alternative to If-Else-If ladder.
switch(conditional-expression) {
case value1:
// code
break; // optional
case value2:
// code
break; // optional
...
default:
// code to be executed when all the above cases are not matched;
}
For loop is used to iterate a set of statements based on a condition.
for(Initialization; Condition; Increment/decrement) {
// code
}
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while(condition) {
// code
}
Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.
do {
// code
} while (condition);
Array is a collection of similar data which is stored in continuous memory addresses. Array values can be fetched using index. Index starts from 0 to size-1.
data-type[] array-name;
Method is a set of statements which gets executed only when they are called. Call the method name in the main function to execute the method.
static void method-name()
{
// code to be executed
}