Move History

Fork Selected
  • Algorithms
    Logic
    Search
    Strings
    Data Types
    Code
    fun findFirstSubString(string: String, subString: String): Int? =
        if (subString.isEmpty()) null
        else string.indexOf(subString).let { if (it == -1) null else it }
    Test Cases
    import org.junit.Assert
    import org.junit.Test
    
    class SimpleSubStringSearchKtTest {
    
        @Test
        fun `Substring longer than string`() {
            Assert.assertNull(findFirstSubString("12345", "123456"))
            Assert.assertNull(findFirstSubString("54321", "123456"))
        }
    
        @Test
        fun `Empty string`() {
            Assert.assertNull(findFirstSubString("", "123456"))
        }
    
        @Test
        fun `Empty substring`() {
            Assert.assertNull(findFirstSubString("12323123", ""))
        }
    
        @Test
        fun `Empty substring and string`() {
            Assert.assertNull(findFirstSubString("", ""))
        }
    
        @Test
        fun `Correct finding`() {
            Assert.assertEquals(findFirstSubString("12345", "123"), 0)
            Assert.assertEquals(findFirstSubString("54321321", "321"), 2)
            Assert.assertEquals(findFirstSubString("123456789ABCDE123456789", "ABCDE"), 9)
            Assert.assertEquals(findFirstSubString("123456789ABCDE123456789", "A"), 9)
            Assert.assertEquals(findFirstSubString("123456789ABCDE123456789", "a"), null)
            Assert.assertEquals(findFirstSubString("111234", "1234"), 2)
        }
    }
    
  • Code
    • fun findFirstSubString(string: String, subString: String): Int? =
    • if (subString.isEmpty()) null
    • else subString.toRegex().find(string)?.range?.first
    • if (subString.isEmpty()) null
    • else string.indexOf(subString).let { if (it == -1) null else it }